1

我在将一些数据绘制到两个单独的 y 尺度上时遇到了麻烦。这是我一直在使用的一些空气质量数据的两个可视化。第一个图以十亿分之几的 y 尺度描绘了每种污染物。在该图中,coy 轴占主导地位,其他污染物的变化均未正确表示。在空气质量科学中,污染物co通常以百万分之几表示,而不是十亿分之几。第二个图显示了相同nono2、 和o3数据,但我已将co浓度从转换ppbppm(除以 1000)。然而,虽然no,no2o3看起来更好,但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

图1

图 2

4

1 回答 1

1

Marius 指出,包含scales = "free_y"facet_grid()函数中将提供所需的输出。谢谢!

解决方案:

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

输出:

在此处输入图像描述

于 2017-09-13T21:13:44.263 回答