首页 > 解决方案 > GGplot - R - 颜色/组的第二轴 - 长格式

问题描述

不幸的是,我在 GGPlot 和辅助轴上苦苦挣扎。我创建了一个长格式的数据,其中包含我想在 GGplot 中显示的三个类别。1 应该显示为多图,1 是颜色 1 是线型。就像在图表中一样!

在此处输入图像描述

我现在遇到的问题是,例如,我不知道如何为“虚线”集成辅助轴。或者我可以只翻转数据并包括颜色的第二个轴,但我认为这是同样的问题。提前致谢!

这是我到目前为止的代码。

#test 
cat1 <- c(rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10))
cat2 <- c(rep("A",10),rep("B",10),rep("B",10),rep("A",10),rep("A",10),rep("B",10),rep("B",10),rep("A",10))
steps <- c(seq(1,10),seq(1,10),seq(1,10),seq(1,10),seq(1,10),seq(1,10),seq(1,10),seq(1,10))
sz <- c(rep(1,40),rep(2,40))
data <- c(cumsum(exp(rnorm(10))),(rnorm(10))/100,cumsum(exp(rnorm(10))),(rnorm(10))/100,cumsum(exp(rnorm(10))),(rnorm(10))/100,cumsum(exp(rnorm(10))),(rnorm(10))/100)

df <- data.frame("Category1" = cat1,
                 "Category2" =cat2,
                 "Steps" = steps,
                 "Szenario" = sz,
                 "Value" = data)


ggplot(df,aes(x=Steps,y=Value,group=interaction(Category1,Category2),color=Category2,linetype=Category1))+
  geom_line()+
  facet_wrap(facets=vars(Szenario),scales="free")

标签: rggplot2

解决方案


更新:

df1 <- df %>% 
  mutate(Value = ifelse(Category1=="B", Value*100, Value))
ggplot(df1,aes(x=Steps,y=Value,group=interaction(Category1,Category2),color=Category2,linetype=Category1))+
  geom_line()+
  facet_wrap(facets=vars(Szenario),scales="free") +
  scale_y_continuous("Category1",
                     sec.axis = sec_axis(trans = ~ . * (min(df$Value)/max(df$Value)),
                                         name = 'Category2'))

在此处输入图像描述

你可以scale_y_continuous

ggplot(df,aes(x=Steps,y=Value,group=interaction(Category1,Category2),color=Category2,linetype=Category1))+
  geom_line()+
  facet_wrap(~Szenario, scales = "free_y") +
  scale_y_continuous("Category1",
                     sec.axis = sec_axis(trans = ~ . * (min(df$Value) / max(df$Value)),
                                         name = 'Category2'))

在此处输入图像描述


推荐阅读