按颜色绘制ggplot中的顺序而不是alphabertical

时间:2017-09-26 09:16:07

标签: r ggplot2

我有以下代码按颜色分割ggplot。而不是按字母顺序绘制x轴是否有一种简单的方法可以将条形图组合在一起,因此红色条例如彼此相邻?手动移动它们不是一种选择,因为我有更多的变量 - 干杯。 enter image description here

mydata <- data.frame(x = c("a", "d", "c", "q", "e", "s", "r", "b"), 
        n = c("UK","EUR","UK", "UK", "EUR", "GLB", "GLB", "EUR"), 
        F = c(-6, 17, 26, -37, 44, -22, 15, 12)) 

ggplot(mydata, aes(x = x, y = F, colour = n, fill =n)) + geom_bar(stat = "Identity")

2 个答案:

答案 0 :(得分:1)

不确定这是不是你想要的。

我猜你正在绘制条形图,这些条目目前按字母顺序排列,如下例所示,

library(ggplot2)
library(dplyr)

sample_data <- data.frame(
    city = letters[1:5], 
    value = c(10, 11, 17, 12, 13), 
    country = c("c1", "c2", "c1", "c1", "c2")
)
ggplot(sample_data) + 
    geom_col(aes(x=city, y=value, colour=country, fill=country))

条形的顺序(从左到右)是a,b,c,d,e。但是,您希望按country排序的条形(变量确定颜色/填充),即a(c1),c(c1),d(c1),b(c2),e(c2)。 / p>

为此,您可以设置正确的&#39; city使用factor(city, levels=...)的顺序。由于您希望按国家/地区对城市进行排序,因此级别为city[order(country)]

sample_data <- sample_data %>% 
    mutate(city2 = factor(city, levels=city[order(country)]))
ggplot(sample_data) + 
    geom_col(aes(x=city2, y=value, colour=country, fill=country))

答案 1 :(得分:1)

您可以尝试:

library(tidyverse)
mydata %>% 
  mutate(x1 = factor(x, levels=x[order(n,F)])) %>% 
   ggplot(aes(x = x1, y = F, colour = n, fill =n)) + 
   geom_col()

enter image description here