如何在不影响结果的情况下改变杆位?

时间:2018-06-08 18:08:59

标签: r ggplot2 position bar-chart

我是R的新手,我试图改变条形图上条形图的位置,但我的结果也发生了变化。以下是图表:Chart of age

enter image description here

当我使用代码时:

positions <- c("Moins de 18 ans","18 a 22 ans", "23 a 27 ans", "33 a 37 ans","38 ans et plus")
p + theme_classic() + scale_x_discrete(limits = positions)

这是我的结果: Chart of age 2

enter image description here

和消息:

    Warning messages:
1: Removed 86 rows containing non-finite values (stat_count). 
2: Removed 86 rows containing non-finite values (stat_count). 

我不知道该如何处理。有人帮帮我!

1 个答案:

答案 0 :(得分:0)

由于您尚未提供数据,我可以展示如何使用虚拟数据重新排列条形图。要对条形图进行排序,基本上您需要对图中用作x轴的变量的数据进行排序。

vec = c(rep("a", 30), rep("b", 20), rep("c", 10))
df = as.data.frame(table(vec)) # Create dummy data frame

Dataframe df看起来像这样 -

  vec Freq
1   a   30
2   b   20
3   c   10

情节将是 -

df %>% 
        ggplot(aes(x = vec, y = Freq)) +
        geom_bar(stat = "identity") # default plot

enter image description here

现在,我想按顺序b,a,c中的条形图。我需要做的就是按照相同的顺序对数据框进行排序 -

df$vec = factor(df$vec, levels = c("b", "a", "c")) # assign levels in order you want to see the bar-plot
df = df[order(df$vec),] # sort dataframe on your x-variable

df %>% 
        ggplot(aes(x = vec, y = Freq)) +
        geom_bar(stat = "identity") # barplot will be sorted on levels of factor now

上述代码的输出是 -

enter image description here

我还没有完成剩余的格式化,但是从你的图表来看,你很擅长。通过执行这些步骤,重新排序条形图时不应更改数据。如果您可以共享数据,我可以更好地了解它是否能解决您的问题。