在 R 中使用 plotly 并排放置圆环图 [英] Placing donut charts side by side using plotly in R

查看:65
本文介绍了在 R 中使用 plotly 并排放置圆环图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从以下plotly创建了圆环图:

I have created donut charts from plotly from the following:

library(plotly)
library(RColorBrewer)
test<-data_frame(Score=c("Green","Green","Yellow","Yellow","Clear","Clear","Red","Red"),Lang=c(rep("Eng",4),rep("Esp",4)))

test1<-data_frame(Score=c("Green","Yellow","Yellow","Yellow","Clear","Clear","Red","Red"),Lang=c(rep("Eng",4),rep("Esp",4)))

color_order<-c("Green","Clear","Yellow","Red")
colors<-c("#31a354","#bdbdbd","#fec44f","#de2d26")

a<-test %>%
mutate(Score=factor(Score,levels=color_order))%>%
arrange(Score)%>%
group_by(Score)%>%
summarize(count = n()) %>%
plot_ly(labels = ~Score,
      values = ~count,
      hoverinfo="skip",
      text = ~count,
      marker = list(colors = colors),
      legendgroup = ~Score) %>%
add_pie(hole = 0.6) %>%
layout(title = "test chart1", showlegend = TRUE,
     font=list(family="sans serif",color="#000"),
     plot_bgcolor="#f0f0f0",
     legend = list(orientation = 'h',font=list(size=28)),
     xaxis = list(title=paste0("Total: ",nrow(test)), showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
     yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))

b<-test1 %>%
mutate(Score=factor(Score,levels=color_order))%>%
arrange(Score)%>%
group_by(Score)%>%
summarize(count = n()) %>%
plot_ly(labels = ~Score,
      values = ~count,
      hoverinfo="skip",
      text = ~count,
      marker = list(colors = colors),
      legendgroup = ~Score) %>%
add_pie(hole = 0.6) %>%
layout(title = "test chart2", showlegend = FALSE,
     font=list(family="sans serif",color="#000"),
     plot_bgcolor="#f0f0f0",
     legend = list(orientation = 'h',font=list(size=28)),
     xaxis = list(title=paste0("Total: ",nrow(test1)),showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
     yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))

我试图将它们与情节 a 中的常见图例并排放置,然后运行以下命令:

I am attempting to put them side by side with the common legend from plot a, and I run the following:

subplot(a,b,nrows = 1)

然而,我只看到一个情节似乎是两者的结合.我也在这里尝试过这种方法:Plotly:并排的条形图和饼图,但它只是给了我一个甜甜圈内的初始风格甜甜圈.如何将它们与共同的传说并排放置?谢谢.

However, I only see one plot which appears to be a combination of the two. I also tried the approach here: Plotly: Bar and pie charts side by side, but it just gave me inception style donut within a donut. How can I put them next to each other with the common legend? Thanks.

推荐答案

据此(https://plot.ly/r/pie-charts/),为了创建饼图子图,您需要使用域属性.您可以尝试这样的操作(根据需要调整 domain):

According to this (https://plot.ly/r/pie-charts/), in order to create pie chart subplots, you need to use the domain attribute. You could try something like this (adjust domain for your needs):

a <- test %>%
    mutate(Score=factor(Score,levels=color_order))%>%
    arrange(Score)%>%
    group_by(Score)%>%
    summarize(count = n())

b<-test1 %>%
    mutate(Score=factor(Score,levels=color_order))%>%
    arrange(Score)%>%
    group_by(Score)%>%
    summarize(count = n())

p <- plot_ly() %>%
    add_pie(data = a, labels = ~Score, values = ~count, hole = 0.6,
            name = "a", domain = list(x = c(0, 0.4), y = c(0.4, 1))) %>%
    add_pie(data = b, labels = ~Score, values = ~count, hole = 0.6,
            name = "b", domain = list(x = c(0.6, 1), y = c(0.4, 1)))  %>%
    layout(title = "test chart1", showlegend = TRUE,
           font=list(family="sans serif",color="#000"),
           plot_bgcolor="#f0f0f0",
           legend = list(orientation = 'h',font=list(size=28)),
           xaxis = list(title=paste0("Total: ",nrow(test)), showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
           yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))

这篇关于在 R 中使用 plotly 并排放置圆环图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆