簡體   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