2017-09-13 216 views
1

我遇到了麻烦绘制一些数据到两个独立的y尺度。以下是我一直在处理的一些空气质量数据的两个可视化图。第一幅图描绘了十亿分之一部分的每种污染物。在这个图中,co在y轴上占主导地位,其他污染物的变化都没有被正确表示。在空气质量科学中,污染物co通常代表百万分之一而不是十亿分之几。第二张图说明了相同的no,no2o3数据,但我已将co浓度从ppb转换为ppm(除以1000)。然而,虽然nono2o3更好看,在co的变化没有被公正地代表...使用ggplot绘制不同的y轴缩放facet_grid()?

是否有使用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 

Figure 1

Figure 2

+6

'facet_grid(...,鳞片= “free_y”)'允许每个行有不同的y轴规模,但你可能不得不切换行/列小平面,如'facet_grid(pollutant_id,scales =“free_y”)' – Marius

+1

你可以把你的解决方案作为答案,而不是添加我回答你的问题,那么你可以把它标记为已解决。 – aosmith

+0

好吧,我会那样做的。我不确定这是否是犹太教,因为马吕斯在技术上是回答这个问题的人。 – spacedSparking

回答

1

Marius指出包括在facet_grid()函数中的210将提供期望的输出。谢谢!

解决方案:

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 

输出:

enter image description here