我正在尝试使用大型数据集进行可视化,而我的数据是长格式的。我想在 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
的方法:
首先制作一个具有不同尺度的三个属性的玩具数据集:
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]))
}