使用 ggplot 在 R 中的 100% 堆积柱形图中创建对数轴

dep*_*ate 0 excel plot r graph ggplot2

我有百分比数据。我想使用 ggplot 创建一个图形,但我无法让它像我想要的那样工作。由于数据非常倾斜,一个简单的堆叠列不能很好地工作,因为真正小的值不会显示。这是一个样本集:

    Actual  Predicted
a   0.5     5
b   9.5     5
c   90      90
Run Code Online (Sandbox Code Playgroud)

左边是excel图,右边是R-ggplot

电子表格绘图

问题是在 R 中,列不会堆叠成偶数。

这是我的 R 代码:

a = c("a","b","c","a","b","c")
b = c("Actual","Actual","Actual","Predicted","Predicted","Predicted")
c = c(0.5,2.5,97,0.2,2.2,97.6)
c = c+1

dat = data.frame(Type=a, Case=b, Percentage=c)
ggplot(dat, aes(x=Case, y=Percentage, fill=Type)) + geom_bar(stat="identity") + scale_y_log10()
Run Code Online (Sandbox Code Playgroud)

*在 Excel 和 RI 中都做 +1 来处理数字 0-1,所以 y 轴稍微偏离

如果我使用:

ggplot(dat, aes(x=Case, y=Percentage, fill=Type)) + geom_bar(stat="identity",position = "fill") + scale_y_log10()
Run Code Online (Sandbox Code Playgroud)

总高度匹配,但是两个蓝色部分的大小不匹配(它们都是 90%)

在此处输入图片说明

Spa*_*man 5

仅仅因为两组数字相加得到相同的值(在本例中为 103)并不意味着日志的总和将相加为相同的值!当您在没有“填充”的情况下堆叠条形时,您会得到不同的高度,因为值的对数总和不同。当你将它全部缩放到相同的高度时,你必须以不同的速度压扁蓝色的盒子,所以它们看起来不同。

Excel 条形图是故意误导的。左边的红色条与其上方的蓝色条大小相同,但代表的值约为蓝色条的十分之一。你不能在比例的对数刻度上制作条形图 - 这是错误的。

有一种绝妙的方法可以显示小数字而不会丢失它们或歪曲它们。它是一种惊人的可视化技术,称为“在表格中写入数字”。