gpt4 book ai didi

r - 在ggplot条形图中显示离散变量的所有x轴标签

转载 作者:行者123 更新时间:2023-12-05 01:10:02 24 4
gpt4 key购买 nike

我有一组数据,我想为数据绘制条形图。数据示例如下:

   yq        flag      n ratio
<yearqtr> <fct> <int> <dbl>
1 2011 Q1 0 269 0.610
2 2011 Q1 1 172 0.390
3 2011 Q2 0 266 0.687
4 2011 Q2 1 121 0.313
5 2011 Q3 0 239 0.646
6 2011 Q3 1 131 0.354
7 2011 Q4 0 153 0.668
8 2011 Q4 1 76 0.332
9 2012 Q1 0 260 0.665
10 2012 Q1 1 131 0.335
11 2012 Q2 0 284 0.676
12 2012 Q2 1 136 0.324
13 2012 Q3 0 197 0.699
14 2012 Q3 1 85 0.301
15 2012 Q4 0 130 0.688
16 2012 Q4 1 59 0.312
17 2013 Q1 0 273 0.705
18 2013 Q1 1 114 0.295
19 2013 Q2 0 333 0.729
20 2013 Q2 1 124 0.271

我想要做的基本上是绘制每个季度每个标志的比率。我写了下面的代码:

data$flag <- as.factor(data$flag)
ggplot(data=data, aes(x=yq, y=ratio, fill=flag)) +
geom_bar(stat="identity", color="black", position=position_dodge())+
theme_minimal() +
scale_fill_manual(values=c('#999999','#E69F00'))

结果如下图:

result of code

但我真正想要的是在 x 轴上显示所有四分之一,并且可能以垂直形式显示更好的可视化。我尝试使用 scale_x_discrete(limits=yq) 但是,这不是正确的答案并返回错误。我该怎么做?

最佳答案

您的 yq 列似乎是年季度格式(如 zoo 包中所定义)。对于 ggplot,最好将其转换为日期格式并像这样指定中断:

library(ggplot2)
library(zoo)

data$flag <- as.factor(data$flag)

ggplot(data=data, aes(as.Date(yq), ratio, fill = flag)) +
geom_col(color="black", position = position_dodge()) +
scale_x_date(date_breaks = "3 months", guide = guide_axis(n.dodge = 2)) +
labs(x = "Year / Quarter") +
scale_fill_manual(values=c('#999999','#E69F00')) +
theme_minimal()

或者你可以堆叠列:


ggplot(data=data, aes(as.Date(yq), ratio, fill = flag)) +
geom_col(color="black", position = position_stack()) +
scale_x_date(date_breaks = "3 months", guide = guide_axis(n.dodge = 2)) +
labs(x = "Year / Quarter") +
scale_fill_manual(values=c('#999999','#E69F00')) +
theme_minimal()

数据

data <- structure(list(yq = structure(c(2011, 2011, 2011.25, 2011.25, 
2011.5, 2011.5, 2011.75, 2011.75, 2012, 2012, 2012.25, 2012.25,
2012.5, 2012.5, 2012.75, 2012.75, 2013, 2013, 2013.25, 2013.25
), class = "yearqtr"), flag = c(0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L,
0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L), n = c(269L,
172L, 266L, 121L, 239L, 131L, 153L, 76L, 260L, 131L, 284L, 136L,
197L, 85L, 130L, 59L, 273L, 114L, 333L, 124L), ratio = c(0.61,
0.39, 0.687, 0.313, 0.646, 0.354, 0.668, 0.332, 0.665, 0.335,
0.676, 0.324, 0.699, 0.301, 0.688, 0.312, 0.705, 0.295, 0.729,
0.271)), row.names = c(NA, -20L), class = c("tbl_df", "tbl",
"data.frame"))

关于r - 在ggplot条形图中显示离散变量的所有x轴标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64580850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com