ggplot2 объединяет несколько типов диаграмм в одну диаграмму - PullRequest
0 голосов
/ 29 января 2019

Я новичок в R и был очарован ggplot2 в сочетании сюжетно.В приведенном ниже коде я пытаюсь сделать джиттер на блок-графике с меткой WAMP из набора данных.Я, кажется, получаю большую часть этого, за исключением того факта, что я не могу отсортировать ось x по размеру и показать 2 значения оси x, что-то вроде этого вопроса: Многострочные метки оси x в линейном графике ggplot

Вот мой код R:

library(ggplot2)
library(plotly)

df <- data.frame(Products = rep(c('Product1','Product2','Product3'), times = 100),
                 Size = rep(c(1000,3000,2000), times = 100),
                 sales = runif(100, min=0, max = 300),
                 WAMP = rep(c(1.5,2.5,3.5), times = 100),
                 PricePerUnit = runif(100, min = 1, max = 5))

p <- ggplot() +
  geom_boxplot(data = df, aes(interaction(df$Size, df$Products, lex.order = TRUE), PricePerUnit, group = 1), outlier.colour = NULL) + 
  geom_jitter(data = df, aes(interaction(df$Size, df$Products, lex.order = TRUE), PricePerUnit, color = sales)) +
  scale_color_gradientn(colours = c("red", "yellow", "green", "lightblue", "darkblue")) +
  scale_y_continuous(breaks = seq(0, 10, by = .5)) +
  geom_line(data = df, aes(interaction(df$Size, df$Products, lex.order = TRUE), y = WAMP)) + 
  geom_text(data = df, aes(label = round(WAMP,2), x = Products, y = WAMP), size = 3) +
  ggtitle("Market by Price Distribution and Sales Volume")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
p <- ggplotly(p)
p

Он создает это изображение, и, как вы можете видеть, он помещает диаграмму WAMP рядом с джиттером коробочного графика (не объединенным).Любая помощь очень ценится здесь.Спасибо.

Джиттер коробочного графика

1 Ответ

0 голосов
/ 30 января 2019

Я не совсем уверен, что понял, но, возможно, это то, что вы хотели?

p <- ggplot() +
    geom_boxplot(data = df, aes(interaction(df$Size, df$Products, lex.order = TRUE), PricePerUnit, group = 1), outlier.colour = NULL) + 
    geom_jitter(data = df, aes(interaction(df$Size, df$Products, lex.order = TRUE), PricePerUnit, color = sales)) +
    scale_color_gradientn(colours = c("red", "yellow", "green", "lightblue", "darkblue")) +
    scale_y_continuous(breaks = seq(0, 10, by = .5)) +
    geom_line(data = df, aes(interaction(df$Size, df$Products, lex.order = TRUE), y = WAMP)) + 
    geom_text(data = df, aes(label = round(WAMP,2), x = interaction(df$Size, df$Products, lex.order = TRUE), y = WAMP), size = 3) +
    ggtitle("Market by Price Distribution and Sales Volume")+
    theme(axis.text.x = element_text(angle = 45, hjust = 1))
p <- ggplotly(p)
p

Это был просто вопрос обозначения geom_text справа x.

...