ggplot barchart“错误:在重新排序的计数的x轴上提供给连续比例的离散值”

时间:2018-05-20 00:28:58

标签: r ggplot2 bar-chart categorical-data r-factor

enter image description here [![在此处输入图片说明] [2]] [2]

我想要一个带有颜色渐变的翻转条形图来区分条形图。下面是我的数据集的前20行bb_count是我的数据集和生成条形图的代码。正确绘制了条形图,但未应用颜色渐变,而是出现错误:

富显示对象时出错:错误:提供给连续刻度的离散值

bb_count <- bb %>% 
             count(chord, sort = TRUE)

# chord n
# C:maj 1183
# G:maj 1140
# A:maj 1071
# D:maj 1054
# F:maj 859
# E:maj 839
# Bb:maj    718
# B:maj 503
# Ab:maj    375
# Eb:maj    360
# A:min 328
# E:min 298
# Db:maj    293
# D:min 250
# B:min 236
# N 201
# E:min7    186
# C:min 176
# D:7   176
# A:min7    170

# Creating a bar plot from `bb_count`
bb_count %>%
  slice(1:20) %>%
  mutate(share = n/sum(n)) %>%
  mutate(chord = reorder(chord, share)) %>%
  ggplot(aes(x = chord, y = share, fill = chord)) +
  geom_bar(stat = 'identity', width = 0.95) + 
  coord_flip() + 
  scale_fill_gradient(low = "green", high = "red") +
  xlab("Share of total chords") +
  ylab("Chord")

1 个答案:

答案 0 :(得分:1)

Error: Discrete value supplied to continuous scale

您的x是离散的,因此您需要scale_x_discrete

df %>%
  slice(1:20) %>%
  mutate(share = n/sum(n)) %>%
  mutate(chord = reorder(chord, share)) %>%
  ggplot(aes(x = chord, y = share, fill = chord)) +
  geom_bar(stat = 'identity', width = 0.95) + 
  coord_flip() + 
  scale_x_discrete() +
  xlab("Share of total chords") +
  ylab("Chord")

enter image description here

数据:

library(data.table)
df <- fread("
# chord n
# C:maj 1183
            # G:maj 1140
            # A:maj 1071
            # D:maj 1054
            # F:maj 859
            # E:maj 839
            # Bb:maj    718
            # B:maj 503
            # Ab:maj    375
            # Eb:maj    360
            # A:min 328
            # E:min 298
            # Db:maj    293
            # D:min 250
            # B:min 236
            # N 201
            # E:min7    186
            # C:min 176
            # D:7   176
            # A:min7    170
")