同Y轴多尺度选择

问题描述 投票:0回答:1

我正在尝试使用大型数据集进行可视化,而我的数据是长格式的。我想在 Y 轴上绘制一个变量 Y1,图例应根据另一个变量属性使用不同的颜色。

数据如下所示:

现在,由于每个属性的 Y1 值都不同,由于相同的比例,我们无法清楚地看到趋势。我不想要双 Y 轴图表(主要和次要轴)。

我在这里和其他一些链接进行了搜索,但没有成功找到正确的路径。

https://stackoverflow.com/questions/32081954/plotting-multiple-feature-on-y-axis-with-different-y-axis-scaling

目标是在同一个 Y 轴上获得多个比例,如图所示,更接近我的期望:

我在 Power Bi 工作,也可以用 R 创建视觉效果。请求建议合适的工具/路径。

r ggplot2 powerbi plotly
1个回答
1
投票

这是在 R 中使用

ggplot2
的方法:

首先制作一个具有不同尺度的三个属性的玩具数据集:

df <- expand.grid(attribute=c("A","B","C"),x=1:1000)
df$y = runif(3000) * 10^(df$attribute=="A") * 10^(df$attribute=="C")

head(df)

  attribute x           y
1         A 1   1.5744261
2         B 1   0.1675056
3         C 1 976.0232542
4         A 2   4.1204111
5         B 2   0.4594168
6         C 2 449.7775410

然后使用

facet_grid
,并使用条带标签作为轴标签:

library(ggplot2)

ggplot(df) + 
  aes(x=x,y=y, col=attribute) + 
  geom_line() + 
  facet_grid(rows=vars(attribute),scale="free",switch = "y") + 
  theme(strip.placement = "outside", 
        strip.background = element_blank(),
        legend.position = "none") + 
  labs(y=NULL) 

在 base R 中也相对容易,您需要调整边距才能使其完全正确。

par(mfrow=c(3,1),mar=c(2,5,2,5),oma=c(3,0,3,0))
a=unique(df$attribute)
for(i in seq_along(a)){
  with(df[df$attribute==a[i],], plot(x,y,type="l",col=i,ylab=a[i]))
}

© www.soinside.com 2019 - 2024. All rights reserved.