【发布时间】:2018-01-23 02:49:06
【问题描述】:
我在 ggplot2 中创建了一个带有两个 y 轴的折线图,并且只希望将一个数据集(蓝色)绘制在反向轴上,并希望将另一个数据集(红色)绘制在与第一个不同的比例上。但是,我正在使用的代码反转两个轴,虽然第二个 y 轴已被编码为具有不同的比例,但第二个数据集(红色)是使用第一个 y 轴的比例绘制的。此外,我创建了一条线(绿色),我必须确定蓝线在哪里截取它。我知道这个问题的后半部分之前已经被问过并得到了回答,但是在那篇文章中指出该解决方案实际上并不起作用。任何输入都会有所帮助!谢谢!我提供了一个示例数据集,因为我的数据集太大而无法重新创建。
time<-c(1,2,3,4,5,6,7,8,9,10)
height<-c(100,330,410,570,200,270,230,390,400,420)
temp<-c(37,33,14,12,35,34,32,28,26,24)
tempdf<-data.frame(time,height,temp)
makeplot<-ggplot(tempdf,aes(x=time)) + geom_line(aes(y=height),color="Blue")
+ geom_line(aes(y=temp),color="Red")+
scale_y_continuous(sec.axis=sec_axis(~./100,name =
"Temperature"),trans="reverse")+
geom_hline(aes(yintercept=250), color="green")
【问题讨论】:
-
为什么要在反向轴上设置高度?这表明它是深度。
-
请一次问一个问题。计算两条线之间的交点与绘图本身几乎没有关系。
-
@neilfws 是的,在我的真实数据中我正在处理深度,我只是认为由于某种原因,这个例子更容易讨论高度。
-
@Axeman 我将这些问题集中在一起,看看是否有某种方法可以使用 ggplot 找到截距,因为折线图本身不是函数,因此我无法仅插入数字来计算截距,但是如果无法使用 ggplot 完成此操作,我会将问题分开。
-
好的。我认为交叉点在
ggplot之外解决得更好。关于轴的另一个问题非常棘手,因为ggplot没有像您尝试使用它们那样正确支持双轴(仅具有相同比例的线性变换,例如英寸和厘米)。这是设计使然。