使用 ggplot facet_grid() 绘制不同的 y 轴比例?
Plotting different y-axis scaling using ggplot facet_grid()?
我 运行 在将一些数据绘制到两个单独的 y 尺度上时遇到了麻烦。这是我一直在使用的一些空气质量数据的两个可视化。第一张图描述了十亿分之一 y 尺度上的每种污染物。在此图中,co
在 y 轴上占主导地位,并且 none 的其他污染物的变化得到了适当的表示。在空气质量科学中,污染物 co
通常以百万分之一而不是十亿分之一表示。第二个图说明了相同的 no
、no2
和 o3
数据,但我已将 co
浓度从 ppb
转换为 ppm
(除以 1000)。然而,虽然 no
、no2
和 o3
看起来更好,但 co
的变化并没有得到公正的体现...
是否有使用 ggplot()
标准化 y 轴比例并最好地代表每种污染物的简单方法?我还尝试研究其他一些示例,这些示例使用 gridExtra 将两个单独的图拼接在一起,每个图都保留其原始的 y 尺度。
生成这些数字所需的数据非常庞大(26,295 个观测值),因此我仍在研究可重现的示例。希望可以在下面描述的 ggplot()
代码中找到解决方案:
plt <- ggplot(df, aes(x=date, y = value, color = pollutant)) +
geom_point() +
facet_grid(id~pollutant, labeller = label_both, switch = "y")
plt
这是 head(df)
的样子(在将 co
转换为 ppm 之前):
date id pollutant value
1 2017-06-16 10:00:00 Pohl co 236.00
2 2017-06-16 10:00:00 Pohl no 23.06
3 2017-06-16 10:00:00 Pohl no2 12.05
4 2017-06-16 10:00:00 Pohl o3 8.52
5 2017-06-16 11:00:00 Pohl co 207.00
6 2017-06-16 11:00:00 Pohl no 20.82
Marius 指出在 facet_grid()
函数中包含 scales = "free_y"
将提供所需的输出。谢谢!
解法:
plt <- ggplot(df, aes(x=date, y = value, color = pollutant)) +
geom_point() +
facet_grid(pollutant~id, scales = "free_y", labeller = label_both, switch = "y")
plt
输出:
我 运行 在将一些数据绘制到两个单独的 y 尺度上时遇到了麻烦。这是我一直在使用的一些空气质量数据的两个可视化。第一张图描述了十亿分之一 y 尺度上的每种污染物。在此图中,co
在 y 轴上占主导地位,并且 none 的其他污染物的变化得到了适当的表示。在空气质量科学中,污染物 co
通常以百万分之一而不是十亿分之一表示。第二个图说明了相同的 no
、no2
和 o3
数据,但我已将 co
浓度从 ppb
转换为 ppm
(除以 1000)。然而,虽然 no
、no2
和 o3
看起来更好,但 co
的变化并没有得到公正的体现...
是否有使用 ggplot()
标准化 y 轴比例并最好地代表每种污染物的简单方法?我还尝试研究其他一些示例,这些示例使用 gridExtra 将两个单独的图拼接在一起,每个图都保留其原始的 y 尺度。
生成这些数字所需的数据非常庞大(26,295 个观测值),因此我仍在研究可重现的示例。希望可以在下面描述的 ggplot()
代码中找到解决方案:
plt <- ggplot(df, aes(x=date, y = value, color = pollutant)) +
geom_point() +
facet_grid(id~pollutant, labeller = label_both, switch = "y")
plt
这是 head(df)
的样子(在将 co
转换为 ppm 之前):
date id pollutant value
1 2017-06-16 10:00:00 Pohl co 236.00
2 2017-06-16 10:00:00 Pohl no 23.06
3 2017-06-16 10:00:00 Pohl no2 12.05
4 2017-06-16 10:00:00 Pohl o3 8.52
5 2017-06-16 11:00:00 Pohl co 207.00
6 2017-06-16 11:00:00 Pohl no 20.82
Marius 指出在 facet_grid()
函数中包含 scales = "free_y"
将提供所需的输出。谢谢!
解法:
plt <- ggplot(df, aes(x=date, y = value, color = pollutant)) +
geom_point() +
facet_grid(pollutant~id, scales = "free_y", labeller = label_both, switch = "y")
plt
输出: