J'essaie de tracer des données où les valeurs y sont grandes :

p <- seq(0.1, 0.9, 0.1)
cost <- 1/(p^2)^15 * 15 * 0.1
data <- data.frame(x=p, y=cost)
ggplot(data, aes(x=x, y=y)) + 
  geom_point(shape=18, color="blue")+
  scale_y_continuous(name="Cost", breaks=c(0, 1e5, 1e10, 1e15, 1e20, 1e25, 1e30))

Cependant, lorsque vous spécifiez les points d'arrêt comme celui-ci, tous les points de données, à l'exception de la première et de la plus grande valeur y, sont alignés sur la ligne y=0.

Voir: ggplot output

Suggestions?

0
shbrainard 17 févr. 2020 à 21:21

1 réponse

Meilleure réponse

Votre meilleur pari est de redimensionner vos données, comme ici avec le logarithme. Vous pouvez simplement indiquer cela dans l'étiquetage de votre graphique et fournir toujours des étiquettes d'axe des y non mises à l'échelle.

breaks = c(0, 1e5, 1e10, 1e15, 1e20, 1e25, 1e30)

ggplot(data, aes(x=x, y=log(y))) + 
  geom_point(shape=18, color="blue")+
  scale_y_continuous(name = "Cost", 
                     breaks = log(breaks),
                     labels = breaks)

Encore plus simple, un peu rouillé :

ggplot(data, aes(x=x, y=y)) + 
  geom_point(shape=18, color="blue")+
  scale_y_continuous(name="Cost",
                     breaks = c(0, 1e5, 1e10, 1e15, 1e20, 1e25, 1e30),
                     trans = "log")
1
caldwellst 17 févr. 2020 à 18:39