我可以在饼图中嵌入的R - 条形图中制作这样的图形

SHR*_*ram 4 r graph ggplot2 pie-chart

我有以下数据:

    I   II  Total 
A   15  25  40
B   5   45  50
C   15  5   20
Run Code Online (Sandbox Code Playgroud)

R数据输入:

group <- c("A", "B", "C", "A", "B", "C")
subgroup <- c("I", "I", "I", "II", "II", "II")
yvar <- c(15, 5, 15, 25, 45, 5)
Run Code Online (Sandbox Code Playgroud)

当我想到一个更好的方式呈现它时,我开始想到饼图(最好是3D)和条形图(最好是3D).这是我的想法的粗略草图,其中条形图嵌入饼图中.如果您有任何其他创新想法来提供此类数据,请建议我.

在此输入图像描述 在此输入图像描述

Car*_*oft 10

我不能强烈推荐您阅读Edward Tufte关于图表和定量数据显示的一些文献.饼图接近向用户传递信息的最差方式.在图表中使用"3-D"图像(例如条形图)被认为是最好的 - 它不会改善可读性或信息流.

那么让我问一下:你想给读者什么信息(以及什么结论)?为什么要两次提供相同的信息?


nei*_*fws 8

如果您有任何其他创新想法来提供此类数据,请建议我

我没有一个创新的想法,但我确实拥有我认为更好的方式.

想想你的数据.它分为组(A,B,C),每组还有一个子组(I,II).因此,当您绘制数据时,需要2个"视觉辅助工具":其中一个显示主要组,第二个显示子组.

一种明智的方法是按位置分离主要组并按颜色指示子组.

因此,您可以将数据重新整形为数据框(df1),如下所示:

  group subgroup yvar
1     A        I   15
2     B        I    5
3     C        I   15
4     A       II   25
5     B       II   45
6     C       II    5
Run Code Online (Sandbox Code Playgroud)

然后使用ggplot生成堆积条形图:

library(ggplot)
ggplot(df1, aes(x = group, y = yvar, fill = subgroup)) + geom_bar()
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

请注意,ggplot会为您计算总计.看一下,看看你的组合3D条形图+饼图并问自己:哪一个最能传达数据的关键特征,一目了然?

当我们告诉你时,请相信我和这个论坛上的数据可视化专家:重要的是清晰的演示,而不是"人们想要的业务".

  • 从科学上讲,这是正确的答案.但是,如果老板想要一个饼图,那么老板想要一张饼图.我们科学家有时需要下高马. (2认同)
  • 我希望老板想要的是良好的数据分析.有时你必须告诉别人他们并不真正想要他们想要的东西,因为你有更好的东西.如果这是一个"高马",那么公平:) (2认同)
  • 我认为叠加的条形图比OP想要的更好,但是,我不喜欢叠加条形图:).上面的第二个(蓝色)类别不共享共同的基线,因此很难看到该子组中的组之间的发展. (2认同)

Gee*_*cid 7

来吧,让我们去吃馅饼吧!我建议你只选择仅限馅饼的解决方案 - 无论如何都需要条形图.只需获得plotrix包.这是我如何以饼图的形式显示6个数字的矩阵.

plot(1:5,type="n",main="Pie charts are evil",xlab="",ylab="",axes=FALSE)#empty plot
require(plotrix)
main_col <- c("#ff0000","#80ff00","#00ffff")#nice colors
main_pie <- floating.pie(3,3,c(40,50,20), col=main_col,radius=1)#your big pie
#here are your small pies with labels using plotrix functions
small_col <- c("black","white")
small_lab <- c("I","II")
A <- floating.pie(3.8,4.5,c(15,5), col=small_col,radius=0.2)
pie.labels(3.8,4.5,A,small_lab,border=F,radius=0.3,cex=0.8)
B <- floating.pie(1.7,2,c(15,25), col=small_col,radius=0.2)
pie.labels(1.7,2,B,small_lab,border=F,radius=0.3,cex=0.8)
C <- floating.pie(4.3,2,c(5,45), col=small_col,radius=0.2)
pie.labels(4.3,2,C,small_lab,border=F,radius=0.3,cex=0.8)
#and finally very useful legend
legend("right",legend=c("A","B","C"),col=main_col,bty="n",pch=15)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 饼图不是邪恶的....每天一个馅饼让医生远离!然而,每天两个馅饼可以让医生靠近...所以不要做很多! (2认同)