ggplot - 水平条形图排序,顶部最大

时间:2018-01-19 07:37:11

标签: r ggplot2

使用如下数据框

text <- "
name,miles
tata_zest,99.8
toyota_prius,100.0
honda_civic,99.9
toyota_corolla,100.0
tata_safari,99.1
nissan_sunny,100.0
"
df <- read.table(textConnection(text), sep=",", header = T, stringsAsFactors = F)

我需要为miles提供name的条形图,以便它们按miles的降序排序。所以我做了以下几点。

df <- df %>%
  arrange(desc(miles))
df$name <- factor(df$name, levels = df$name)

ggplot() +
  geom_col(data=df, aes(x=name, y=miles) )

这给了我一张如下图所示的条形图 - 很好很棒。条形按降序排序。我想生成具有相同数据的水平条形图。通过添加coord_flip(),可以实现这一目标。然而,挑战在于,在水平条形图中,我希望条形图在顶部具有最大值,在底部具有最小值。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

这样的东西对你有用吗?或多或少与Tino 's comment

相同
df <- arrange(df, miles)
df$name <- factor(df$name, levels = df$name)
ggplot(df, aes(name, miles, fill = name)) + geom_col() + coord_flip() +
    scale_fill_brewer(palette="Spectral")

plot