繁体   English   中英

R:更改ggplot2中x轴的位置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM