2017-09-13 8 views
1

J'ai des problèmes pour tracer certaines données sur deux échelles y séparées. Voici deux visualisations de certaines données sur la qualité de l'air avec lesquelles j'ai travaillé. La première figure représente chaque polluant sur une échelle de parties par milliard d'y. Sur cette figure, co domine l'axe des Y, et aucune des variations des autres polluants n'est correctement représentée. Dans la science de la qualité de l'air, le polluant co est classiquement représenté en parties par million au lieu de parties par milliard. La deuxième figure illustre les mêmes données no, no2 et o3, mais j'ai converti la concentration co de ppb en ppm (diviser par 1000). Cependant, alors que no, no2 et o3 regarder mieux, la variation de co n'est pas représenté à juste titre ...Tracé d'une mise à l'échelle différente de l'axe y à l'aide de ggplot facet_grid()?

est-il un moyen facile en utilisant ggplot() pour normaliser l'échelle de l'axe y et représentent le mieux chaque type de polluant? J'essaie aussi de travailler à travers d'autres exemples qui utilisent gridExtra pour assembler deux parcelles séparées, chacune conservant ses écailles y originales.

Les données nécessaires pour générer ces chiffres sont énormes (26 295 observations), donc je travaille toujours sur un exemple reproductible. Espérons qu'une solution peut être trouvée dans le code ggplot() décrit ci-dessous:

plt <- ggplot(df, aes(x=date, y = value, color = pollutant)) + 
    geom_point() + 
    facet_grid(id~pollutant, labeller = label_both, switch = "y") 
plt 

Voici ce que l'head(df) ressemble (avant de convertir le co en 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 (..., échelles = "free_y")' permet chaque ligne d'avoir un autre y- échelle, mais vous devrez peut-être changer la facette de ligne/colonne comme 'facet_grid (pollutant ~ id, scales =" free_y ")' – Marius

+1

Vous pouvez mettre votre solution comme une réponse au lieu d'ajouter i t à votre question, alors vous pouvez le marquer comme résolu. – aosmith

+0

D'accord, je vais le faire. Je n'étais pas sûr si c'était casher puisque Marius était techniquement celui qui répondait à la question. – spacedSparking

Répondre

1

Marius a souligné que, y compris scales = "free_y" dans la fonction facet_grid() fournirait la sortie désirée. Merci!

Solution:

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 

Sortie:

enter image description here