【问题标题】:How to plot multi bar char with multi line char on secondary y-axis?如何在辅助 y 轴上绘制带有多折线图的多条形图?
【发布时间】:2020-07-10 02:44:59
【问题描述】:

提前致谢。 我想在主 y 轴上绘制多条形图,同时在辅助 y 轴上绘制多条线,在 R 中使用不同的比例。这是测试数据。

test.data<-data.frame(TYPE=c("A","B","C","D"), D1=c(20,10,1,1.1), 
      D2=c(40,20,3,2), D3=c(9,30,8,3), D4=c(12,20,3,6), D5=c(30,10,6,3) )

我希望它可以像下面这样显示。

【问题讨论】:

  • 你试过什么代码?

标签: r ggplot2 plot


【解决方案1】:

您可以使用以下代码

library(tidyverse)

test.data<-data.frame(TYPE=c("A","B","C","D"), D1=c(20,10,1,1.1), 
                      D2=c(40,20,3,2), D3=c(9,30,8,3), D4=c(12,20,3,6), D5=c(30,10,6,3) )


df1 <- test.data %>% 
  pivot_longer(cols = -TYPE) %>% 
  subset(TYPE %in% c("A","B"))


df2 <- test.data %>% 
  pivot_longer(cols = -TYPE) %>% 
  subset(TYPE %in% c("C","D")) 


ggplot() + 
  geom_col(data = df1, aes(x = name, y = value, fill = TYPE), position = position_dodge()) +
  scale_fill_manual("Type", values = c("A" = "#56B4E9", "B" = "#E69F00"))+
  geom_point(data = df2, aes(x = name, y = value*5,  group = TYPE, col = TYPE)) + 
  geom_line(data = df2, aes(x = name, y = value*5, group = TYPE, col = TYPE)) +
  scale_color_manual("Type", values = c("C" = "darkgrey", "D" = "black"))+
  scale_y_continuous(name = "First Axis",
                     sec.axis = sec_axis(trans = ~.*1/5, name="Second Axis"))+
  theme_bw()

【讨论】:

  • 如果辅助轴与主轴不是线性相关的,我应该如何设置'sec_axis'?例如,主轴的范围是 0-40,而从动可以是 -1 ~ 1 或 -2 ~ 5。
猜你喜欢
  • 2019-05-24
  • 1970-01-01
  • 2017-08-06
  • 2021-05-04
  • 1970-01-01
  • 2015-09-01
  • 2016-10-09
  • 1970-01-01
相关资源
最近更新 更多