我想在ggplot中创建一个条形图,其中所有条形在对数变换的Y轴上从零上升到它们的高度。但是,ggplot将Y轴“归零”为1,然后0和1之间的任何值现在用向下伸展的条表示,即使它们仍然是正值。下面是生成附图和错误输出的代码:
data <- data.frame(matrix(c(1990, 2000, 2010, 15, 3, .5),ncol=2))
names(data) <- c("x","y")
ggplot(data, aes(x=x, y=y)) + geom_bar(stat="identity") + scale_y_log10() + annotation_logticks()
警告讯息: 当ymin!= 0时,堆栈没有很好地定义
我更喜欢这个数字会产生一个更类似于此的图形,其中所有条形都是向上的。
ggplot(data, aes(x=x, y=10*y)) + geom_bar(stat="identity") + scale_y_log10() + annotation_logticks()
答案 0 :(得分:0)
geom_bar
底部硬编码为0,因此看起来不容易改变。您可以尝试的其他事情是自己绘制矩形。由于我们不使用条形图,因此我们会确保year
变量是时间因素。因此,如果我们的样本数据是
data <- data.frame(
x=factor(c(1990, 2000, 2010)),
y=c( 15, 3, .5)
)
然后我们可以用
绘图ggplot(data) +
geom_rect(aes(xmax=as.numeric(x)+.4, xmin=as.numeric(x)-.4,
ymax=y, ymin=0)) +
scale_y_log10()+
scale_x_discrete( breaks=levels(data$x), expand=c(0,.5),
limits=levels(data$x)) +
annotation_logticks(sides="l")
产生