2017-09-13 94 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