R ggplot пузырьковая диаграмма локализованные пузырьки отображаются без единой диаграммы - PullRequest
0 голосов
/ 18 марта 2019

Здравствуйте, эксперты по R / ggplot!

R и ученик ggplot здесь.

Я работал над сценарием и думал, как мне лучше отобразить данные.Ребята, мне нужны советы и указания.

R Воспроизводимый ggplot :

library(ggrepel)

# Create the data frame.
sales_data <- data.frame(
  emp_name <- c("Sam", "Dave", "John", "Harry", "Clark", "Kent", "Kenneth", "Richard", "Clement", "Toby"), 
  month <- as.factor(c("Jan", "Feb", "Mar", "Jan", "Feb", "Mar", "Jan", "Feb", "Mar", "Jan")),
  dept_name <- as.factor(c("Production", "Services", "Support", "Support", "Services", "Production", "Production", "Support", "Support", "Support")), 
  revenue <- c(100, 200, 300, 400, 500, 600, 500, 400, 300, 200)
)

sales_data$month <- factor(sales_data$month, levels = c("Jan", "Feb", "Mar"))

categorical_bubble_chart <-  ggplot(sales_data, aes(x= month, y = dept_name, size = revenue, fill = revenue, label = revenue)) +
  geom_point(shape = 21, show.legend = FALSE) 

categorical_bubble_chart

Выходной сюжет : enter image description here

Пока хорошо!Представлять данные наилучшим образом в настоящем сценарии.Вот как это должно выглядеть.enter image description here

Мне трудно понять следующие моменты:

  1. Как показать категории месяца («Январь», «Фев»"," Мар ") между линиями сетки.Аналогично для отделов.Так что я могу сделать область, подобную сетке, для каждой комбинации.

  2. Прямо сейчас все пузырьки накладываются друг на друга.Я хочу, чтобы пузыри не перекрывали друг друга.Для этого я собираюсь добавить еще один столбец в свой фрейм данных и случайным образом назначить значение, которое будет использоваться для построения графика внутри области сетки.Но мне трудно понять, когда мои x / y уже равны month и dept_name, тогда какое случайное значение я могу предоставить, чтобы каждый пузырь отличался друг от друга?

Я думал об этом решении с прошлых 5-6 часов, но не мог найти решение.Любое направление или предложение будет высоко оценено и изучено для будущих читателей.

Ответы [ 2 ]

2 голосов
/ 18 марта 2019

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

require(ggplot2)
# Create the data frame.
sales_data <- data.frame(
  emp_name = c("Sam", "Dave", "John", "Harry", "Clark", "Kent", "Kenneth", "Richard", "Clement", "Toby"), 
  month = as.factor(c("Jan", "Feb", "Mar", "Jan", "Feb", "Mar", "Jan", "Feb", "Mar", "Jan")),
  dept_name = as.factor(c("Production", "Services", "Support", "Support", "Services", "Production", "Production", "Support", "Support", "Support")), 
  revenue = c(100, 200, 300, 400, 500, 600, 500, 400, 300, 200)
)

sales_data$month <- factor(sales_data$month, levels = c("Jan", "Feb", "Mar"))

categorical_bubble_chart <-  ggplot(sales_data, aes(x= revenue, y = revenue, size = revenue, fill = revenue, label = revenue)) +
  geom_point(shape = 21, show.legend = FALSE) +
  facet_grid(dept_name~month)

categorical_bubble_chart

дает:

enter image description here

1 голос
/ 18 марта 2019

В качестве альтернативы подходу @ Wietze314, построена «быстрая и грязная» одиночная диаграмма:

ggplot(data = sales_data, aes(x = month, y = dept_name)) +
  geom_tile(data = expand.grid(sales_data$month, sales_data$dept_name), 
            aes(x = Var1, y = Var2), fill = NA, col = 'gray50', lty = 2) +
  geom_point(aes(size = revenue, col = revenue), 
             shape = 16, position = position_jitter(seed = 0), show.legend = F) +
  geom_text(aes(label = revenue), vjust = 1.6, position = position_jitter(seed = 0)) +
  theme_bw() +
  theme(
    axis.title = element_blank(),
    axis.ticks = element_blank(),
    plot.background = element_blank(), 
    axis.line = element_blank(), 
    panel.border = element_blank(), 
    panel.grid = element_blank()
    )

enter image description here

...