[英]R: Change position of x-axis in ggplot2
我正在尝试在ggplot2中使用y轴上的对数刻度来绘制躲避的条形图。 但是,当我在代码中添加scale_y_log10()
,R将x轴居中于1.0而不是0。如何将x轴移至y = 0,以使所有<1.0的数据都不为负?
这是我的代码:
snag_means
year LMU mean.BA.ha
1 1911 1 0.11219519
2 1911 2 0.11921667
3 1911 3 0.07807921
4 1911 4 0.04811538
5 1911 5 0.15444167
6 1911 6 0.02894872
7 2005-2007 1 5.48898500
8 2005-2007 2 5.56879565
9 2005-2007 3 7.51420667
10 2005-2007 4 2.74502500
11 2005-2007 5 10.16307419
12 2005-2007 6 2.91587692
snag_mean_BA <- ggplot(data = snag_means,
aes(x = LMU, y = mean.BA.ha, fill = year, width = .8)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Mean Snag Basal Area by Topography",
y = expression("Mean Basal Area (" ~ m^{2} ~ ha^{-1} ~ ")"),
x = "LMU", fill = "Year") +
scale_fill_manual(breaks = c("1911", "2005-2007"), values = c("gray31", "gray65")) +
scale_x_continuous(breaks = seq(0, 6, by = 1)) +
scale_y_log10()
图snag_mean_BA
:
可以取出scale_y_log10()
在端部,并且内部aes
之前与登录变换数据y = log10(mean.BA.ha)
ggplot(data = snag_means, aes(x = LMU, y = log10(mean.BA.ha), fill = year, width = .8)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Mean Snag Basal Area by Topography",
y = expression("Mean Basal Area (" ~ m^{2} ~ ha^{-1} ~ ")"),
x = "LMU", fill = "Year") +
scale_fill_manual(breaks = c("1911", "2005-2007"), values = c("gray31", "gray65")) +
scale_x_continuous(breaks = seq(0, 6, by = 1))
如果对数据进行缩放以使所有值都不小于1,那么您可以获得(我认为是)期望的结果。
snag_means$mean.BA.ha <- snag_means$mean.BA.ha + 1
snag_mean_BA <- ggplot(data = snag_means, aes(x = LMU, y =
mean.BA.ha, fill = year, width = .8)) + geom_bar(stat = "identity",
position = "dodge") + labs(title = "Mean Snag Basal Area by
Topography", y = expression("Mean Basal Area (" ~ m^{2} ~ ha^{-1} ~
")"), x = "LMU", fill = "Year") + scale_fill_manual(breaks =
c("1911", "2005-2007"), values = c("gray31", "gray65")) +
scale_x_continuous(breaks = seq(0, 6, by = 1)) + scale_y_log10()
snag_mean_BA
也许你可以通过不使用得到您想要的输出scale_y_log10()
但scale_y_sqrt()
snag_mean_BA2 <- ggplot(data=snag_means, aes(x=LMU, y=mean.BA.ha, fill=year, width=0.8)) +
geom_bar(stat='identity', position='dodge') +
scale_fill_manual(breaks=as.character(unique(snag_means$year)), values=c('gray31','gray65')) +
scale_x_continuous(breaks=seq(0,6,by=1)) +
scale_y_sqrt()
print(snag_mean_BA2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.