Точки останова не работают с scale_y_continuous () - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь построить некоторые данные, где значения y велики:

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))

Однако при задании таких точек останова все точки данных, кроме первого и наибольшего значения y, выровнен по линии у = 0.

См .: ggplot output

Предложения?

1 Ответ

1 голос
/ 17 февраля 2020

Лучше всего изменить масштаб ваших данных, например, здесь с логарифмом. Вы можете просто обозначить это в маркировке вашего графика и по-прежнему предоставлять немасштабированные метки по оси Y.

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)

Еще проще, немного ржаво:

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")
...