簡體   English   中英

如何在 ggplot2 中轉換輔助 y 軸和比例

[英]How to transform secondary y axis and scale in ggplot2

我在 ggplot2 中有以下ggplot2但我對輔助 y 軸的縮放方式不太滿意,因為灰線看起來相當平坦。

我更願意為次要 y 軸和灰線創建一個范圍僅為 1.75 到 2.25 的比例,以便我可以更好地看到運動。 關於如何做到這一點的任何建議?

library(tidyverse)

reserves_level <- structure(list(Date = structure(c(18291, 18321, 18351, 18382, 
18412, 18443, 18473, 18504, 18535, 18565, 18596, 18626, 18657, 
18291, 18321, 18351, 18382, 18412, 18443, 18473, 18504, 18535, 
18565, 18596, 18626, 18657), class = "Date"), Key = c("Reserves (NAD)", 
"Reserves (NAD)", "Reserves (NAD)", "Reserves (NAD)", "Reserves (NAD)", 
"Reserves (NAD)", "Reserves (NAD)", "Reserves (NAD)", "Reserves (NAD)", 
"Reserves (NAD)", "Reserves (NAD)", "Reserves (NAD)", "Reserves (NAD)", 
"Reserves (USD)", "Reserves (USD)", "Reserves (USD)", "Reserves (USD)", 
"Reserves (USD)", "Reserves (USD)", "Reserves (USD)", "Reserves (USD)", 
"Reserves (USD)", "Reserves (USD)", "Reserves (USD)", "Reserves (USD)", 
"Reserves (USD)"), Value = c(30.96107351507, 32.16872169411, 
32.97394333811, 35.6594389906, 32.944455576, 31.75897192528, 
35.3995709836, 33.3870647566, 32.66579275848, 34.35383925875, 
29.92587, 31.7517, 33.35816, 2.06261398712043, 2.05295138288458, 
1.84674175243683, 1.92451004045528, 1.87739090357876, 1.83355302380232, 
2.08125035179437, 1.97135496109494, 1.95207290341642, 2.11488932754343, 
1.94197, 2.10318, 2.20185)), row.names = c(NA, -26L), class = c("tbl_df", 
"tbl", "data.frame"))

ggplot() +
  geom_col(data = subset(reserves_level, Key %in% c("Reserves (NAD)")),
           mapping = aes(x = Date, y = Value, fill = Key),
           position = position_dodge()) +
  geom_line(data = subset(reserves_level, Key == "Reserves (USD)"),
            mapping = aes(x = Date, y = Value*15, group = Key, color = Key),
            size = 2) +
  scale_fill_manual(values = c('#7c3042','#c7af76')) +
  scale_color_manual(values = c('grey')) +
  theme_bw() +
  scale_y_continuous(sec.axis= sec_axis(~./15, name="Reserves (USD)", breaks = seq(0,2.5, by = 0.25))) 


在此處輸入圖像描述

也許這可以幫助你

ylim.p <- c(0, 30)   
ylim.s <- c(1.75, 2.25)    

b <- diff(ylim.p)/diff(ylim.s)
a <- b*(ylim.p[1] - ylim.s[1])

ggplot() +
  geom_col(data = subset(reserves_level, Key %in% c("Reserves (NAD)")),
           mapping = aes(x = Date, y = Value, fill = Key),
           position = position_dodge()) +
  geom_line(data = subset(reserves_level, Key == "Reserves (USD)"),
            mapping = aes(x = Date, y = (Value*b)+a, group = Key, color = Key),
            size = 2) +
  scale_fill_manual(values = c('#7c3042','#c7af76')) +
  scale_color_manual(values = c('grey')) +
  theme_bw() +
  scale_y_continuous(sec.axis= sec_axis(~(. - a)/b, name="Reserves (USD)", breaks = seq(1.75,2.5, by = 0.25))) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM