Добавление geom_text в круговую диаграмму - PullRequest
0 голосов
/ 13 июня 2019

Я хочу создать круговую диаграмму, которая показывает, как производство фильмов увеличилось с течением времени.Я могу создать сам график, но при попытке добавить метки к столбцам он идет совсем не так.Любое понимание - и почему график так радикально изменился - будет высоко ценится.ТИА.

Я думаю, что это связано со значением ylim, но я не уверен.


ratings <- read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-01-08/IMDb_Economist_tv_ratings.csv")
ratings$year_rel <-year(ratings$date)


#data 
ratings_bar <- ratings %>%
  select(titleId, year_rel) %>%
  add_count(titleId) %>%
  group_by(year_rel) %>%
  summarise(total = sum(n)) %>%
  filter(year_rel >= 2000) %>%
  mutate(id = seq(1,19))

#Make labels
label_data <- ratings_bar
number_of_bar <- nrow(label_data)
angle <-  90 - 360 * (label_data$id-0.5) /number_of_bar 
label_data$hjust<-ifelse( angle < -90, 1, 0)

label_data$angle<-ifelse(angle < -90, angle+180, angle)

#make graph
ratings_bar %>%
  ggplot(aes(x = year_rel, y = total)) + 
  geom_bar(stat = "identity", col = "darkblue", fill = "skyblue", alpha = 0.7) +
  ylim(-100,1200) + #i think this is where the error arrives
  theme_minimal() +
  theme( axis.text = element_blank(), axis.title = element_blank(), panel.grid = element_blank(), plot.margin = unit(rep(-1,4), "cm")) +
  coord_polar(start = 0) +# Up to here the code plots a circular barplot correctly
  geom_text(data=label_data, aes(x=id, y=year_rel+10, label=total, hjust=hjust), color="black", fontface="bold",alpha=0.6, size=2.5, angle= label_data$angle, inherit.aes = FALSE ) 


До предпоследней строки создается столбец без меток, однако после этого создается синяя метка ...

1 Ответ

0 голосов
/ 13 июня 2019

Добавление нового набора данных в geom_text, похоже, является проблемой.Кажется, что системы координат не подходят, что имеет смысл, поскольку переменная y в ratings_bar работает от 211 до 784, а переменная y в label_data - от 2000 до 2018.Чтобы избежать этого, I (1) не вводит второй набор данных в аргументе данных geom_text, (2) только добавляет labels в аргументе aes и (3) переключает порядок операторов ggplot с помощьюсначала добавьте geom_text, а затем добавьте оператор coord_polar.

Существует ли какая-либо конкретная причина, по которой вы добавляете 10 к y = year_rel в аргументе geom_text?

    ratings_bar %>%
        ggplot(aes(x = year_rel, y = total)) + 
        geom_bar(stat = "identity", col = "darkblue", fill = "skyblue", alpha = 0.7) +
        ylim(-100,1200)  + 
        theme_minimal() +
        geom_text(aes(label=total),
                  hjust = label_data$hjust,
                  color = "black",
                  fontface = "bold",
                  alpha = 0.6,
                  size = 2.5,
                  angle = label_data$angle) +
                  coord_polar(start = 0) + 
        theme( axis.text = element_blank(),
               axis.title = element_blank(),
               panel.grid = element_blank(),
               plot.margin = unit(rep(-1,4), "cm")) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...