Использование geom_ridgeline с осью журнала - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь визуализировать данные временных рядов и подумал, что пакет ggridges будет полезен для этого. Однако некоторые из моих данных должны быть представлены в логарифмическом масштабе. Есть ли способ сделать это?

Я пробовал использовать y = 0.001 вместо 0, так как y = ноль не удается, но тогда высоты не верны. Это можно увидеть и при построении точек.

Спасибо

Пример ниже:

data <- data.frame(x = 1:5, y = rep(0.001, 5), height = c(0.001, 0.1, 3, 300, 4))
ggplot(data) +
  geom_ridgeline(aes(x, y, height = height),fill = "lightblue") +
  scale_y_log10() +
geom_point(aes(x=x, y=height))

1 Ответ

0 голосов
/ 03 марта 2020

Надеюсь, это поможет вам решить вашу проблему.

Используя пример из ggridges (https://wilkelab.org/ggridges/articles/introduction.html), я добавил +1, чтобы избежать нулей (и таким образом Inf) при взятии log10

library(ggridges)
d <- data.frame(
  x = rep(1:5, 3),
  y = c(rep(0, 5), rep(1, 5), rep(2, 5)),
  height = c(0, 1, 3, 4, 0, 1, 2, 3, 5, 4, 0, 5, 4, 4, 1)
)

ggplot(d, aes(x, (y + 1), height = height, group = y)) + 
  geom_ridgeline(fill = "lightblue")+
  scale_y_log10() +
  annotation_logticks(sides = "l")

Генерирует:

enter image description here

...