对数刻度的堆叠条形图ggplot

时间:2019-01-18 23:59:00

标签: r ggplot2 bar-chart

我正在尝试使用R中的ggplot进行堆叠的barplot,使用y轴的log_10比例,但是我得到了错误的绘图。

这是我的代码:

library(reshape2)
library(ggplot2)

DF <- structure(list(Worker = 1:18, Seed = c(300, 40, 200, 0.1, 0.1, 
0.1, 1000, 0.1, 0.1, 30, 45, 0.1, 13, 0.1, 50, 0.1, 0.1, 30), 
Boosted = c(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
35, 0.1, 0.1, 13, 0.1, 0.1, 0.1, 0.1, 0.1), Online = c(0.1, 
0.1, 0.1, 15000, 60, 500, 0.1, 100, 450, 0.1, 200, 500, 0.1, 
5000, 0.1, 70, 1000, 500)), class = "data.frame", row.names = c(NA, 
-18L))

DF1 <- melt(DF, id.var="Worker")

ggplot(DF1, aes(x = Worker, y = value, fill = variable)) + 
  geom_bar(stat = "identity") +
  xlab("id") + 
  ylab("# of x") + 
  labs(fill = "") +
  scale_fill_manual(values = cols,
                    labels = c("Mobile", "Laptop","Online User")) + 
  scale_x_continuous(breaks = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)) + 
  expand_limits(x = 1, y = 1) + 
  scale_y_log10(limits = c(1,1e5), 
                breaks = scales::trans_breaks("log10", function(x) 10^x),
                labels = scales::trans_format("log10", scales::math_format(10^.x)))

在下面看到的图像中,某些ID的条是错误的:例如,参见ID 10和13。

我想念什么?我还尝试过仅在log(value)中使用ggplot(DF1, aes(x = Worker, y = log(value), fill = variable)),但是我也得到了相同的结果。

enter image description here

0 个答案:

没有答案