如何使用带 'y' 的线极坐标作为简单计数 ggplot2 对图形重新排序?

How can I reorder the graph using cord polar with 'y' as a simple count ggplot2?

我正在尝试按计数对图表进行排序,但我不清楚该怎么做。重要的是 'topic' 是一个离散变量,我只是显示整个数据集中每个主题的计数。这是我使用的代码:

ggplot(data = dtd, aes(x = topic)) + geom_bar(fill = "lightblue", colour = "black") + coord_polar()

这是我尝试重新排序时的错误:

 ggplot(data = dtd, aes(x = reorder(topic))) + geom_bar(fill = "lightblue", colour = "black") + coord_polar()
Error in tapply(X = X, INDEX = x, FUN = FUN, ...) : 
  argument "X" is missing, with no default

如果有人会说我如何用渐变蓝色阴影或漂亮的东西填充这些部分,那就更好了。

错误来自 reorder 没有第二个值向量来重新排序。您可以通过在传递给 ggplot 之前计算您的数据来提供一个,然后通过新变量对其重新排序:

library(dplyr)
library(ggplot2)

df <- tibble(Topic = c(rep("A", 55), rep("B", 22), rep("C", 40), rep("D", 100)))

df %>%
  group_by(Topic) %>% 
  summarise(freq = n()) %>% 
  ggplot(aes(x = reorder(Topic, freq), y = freq)) + 
  geom_bar(fill = "lightblue", colour = "black", stat = "identity") +
  coord_polar()

可能有更流畅的方法,但这会保留您之前使用的 reorder 功能。