【发布时间】:2021-02-04 20:14:37
【问题描述】:
我正在尝试在使用 facet_wrap 时在 ggplot2 中绘制几个面板。我想要两个 y 轴。左侧 y 轴范围从 5 到 27,右侧 y 轴范围从 25 到 27。我想用回归线显示所有数据点。但是,当我绘图时,右侧 y 轴的变化与其他数据集相比较低,因此显示为一条平线。我想将右侧 y 轴保持在 25 到 27 之间,以便可以清楚地看到数据的变化。我使用了此代码1,但无法对其进行排序。非常感谢任何帮助。
library(ggplot2)
scaleFactor <- max(d1$weeks) / max(d1$income)
ggplot(mtcars, aes(x=Year)) +
geom_smooth(aes(y=weeks), method="loess", col="blue") +
geom_smooth(aes(y=income * scaleFactor), method="loess", col="red") +
scale_y_continuous(name="weeks", sec.axis=sec_axis(~./scaleFactor, name="income")) +
theme(
axis.title.y.left=element_text(color="blue"),
axis.text.y.left=element_text(color="blue"),
axis.title.y.right=element_text(color="red"),
axis.text.y.right=element_text(color="red")
)
【问题讨论】:
-
对不起,我没有看到您在代码生成的图中提到的问题。特别是,您在不同的面板中提到了一个问题,但您没有在代码中包含
facet_wrap()。您能否修改代码以更明显地显示问题? -
@teunbrand 上面的代码工作正常。但是,我想将一个 y 轴限制在 25 到 27 之间,另一个限制在 5 到 30 之间。因为两个变量的最大值相似,所以转换没有帮助。基本上,我想将 25-27 的比例扩展到 5-30。 +facet_warap(~group) 也可以正常工作。
-
我知道代码有效,它运行没有错误。我看到的是:蓝色位的范围是 4-8,红色位的范围是 52-335。这与您提到的 25-27 和 5-30 范围有什么关系?另外,这个组在 mtcars 数据中来自哪里?
-
@teunbrand 对所有的混乱感到非常抱歉。我使用此代码对我的数据集运行分析。我有一个非常大的数据集,现在我添加了一个示例来显示数据的结构。
-
这能回答你的问题吗? How to use facets with a dual y-axis ggplot
标签: r ggplot2 figure facet-wrap yaxis