我试图创建一个显示带有两个x轴的线的图,一个是连续的数字,另一个是离散的。
这是数据示例:
df <-cbind.data.frame("Category"=c("A","A","A","A","A","B","B","B","B","B"),
"Y"=c(5,6,4,8,9,4,5,3,7,8),
"X1"=c(0,10,20,30,40,0,10,20,30,40),
"X2"=c(0,0,1,1,2,0,1,2,2,3))
我试图添加辅助轴并对其进行缩放,但是由于我的两个变量不成比例,所以我不知道如何重新缩放,因此直线上的相同Y点将同时适合两个x轴。
ggplot(data=df) +
geom_path(aes(y=Y,x=X1),color="red")+
geom_path(aes(y=Y,x=X2*10),color="blue")+
facet_wrap(~Category)+
scale_y_continuous("Y")+
scale_x_continuous("X1",sec.axis = sec_axis(~ .*1/10, "X2"))
我在两轴上阅读了不同的问题,但是找不到解决我问题的方法。
我正在寻找这样的东西:
对此我将不胜感激!
答案 0 :(得分:1)
您提供的图不能证明明显的代数关系,因此,我将为您提供一个完全任意的第二个x轴的示例。
library(ggplot2)
ggplot(mtcars, aes(mpg, disp)) +
geom_point() +
scale_x_continuous(sec.axis=sec_axis(~., breaks=c(15,20,30), labels=c('a','b','c')))
第一个参数是转换“ ~.
”(本质上是x2=x1
),它是必需的,因此在这种情况下,它是1对1转换。另外两个相对清晰,您将'a'
放置在x=15
处,将'b'
放置在x=20
处,依此类推。我认为没有办法将两者放在同一根轴上(仅使用ggplot2
)。