r - R 中的条形图有问题?
问题描述
这个想法来自这个(在ggplot2中组合条形图和折线图(双轴))。这是我正在使用的代码
#Data generation
Month1 <- c(201812,20191,20192,20193,20194,20195,20196,
20197,20198,20199,201910,201911,201912,20201
,20202,20203,20204,20205,20206,20207
,20208,20209,202010,202011)
annualjobgrowth<- c(44400,46000,42600,40500,42800,40500,36000,
34000,32300,29900,21900,24500,21000,
23300,16000,-6200,-275600,-249500,-149200,
-136500,-129900,-122800,-113900,-109500)
Rate <-
c(3.3,3.4,3.1,3.0,3.1,2.9,2.6,2.5,2.3,2.1,1.6,1.7,1.5,1.7,1.1,-0.4,
-19.5,-17.6,-10.5,-9.6,-9.1,-8.6,-8.0,-7.7)
cesyoy <- data.frame(Month1,annualjobgrowth, Rate)
#Chart
library(ggplot2)
firstces<-ggplot(cesyoy) +
geom_bar(aes(x=Month1, y=annualjobgrowth),stat="identity", fill="tan1",
colour="sienna3")+
geom_line(aes(x=Month1, y=Rate),stat="identity")+
geom_text(aes(label=Rate, x=Month1, y=Rate), colour="black")+
geom_text(aes(label=annualjobgrowth, x=Month1, y=0.9*annualjobgrowth),
colour="black")
ggsave("firstces.png")
预期结果是一个包含 24 个独立条的条形图。每一个都测量上面提供的年度就业增长。结果是没有酒吧之一。为了让它正确解释这些数据,我将在 geom_bar 部分中包含什么?
解决方案
你的Month1
变量是数字的。如果您将其更改为日期,您将使用其余代码获得预期结果。由于annualjobgrowth
和的比例Rate
非常不同,您可以使用辅助轴并缩放数据以将两者放入同一个图中。它仍然很拥挤,但你明白了。
Month1 <- c(201812,20191,20192,20193,20194,20195,20196,
20197,20198,20199,201910,201911,201912,20201
,20202,20203,20204,20205,20206,20207
,20208,20209,202010,202011)
annualjobgrowth<- c(44400,46000,42600,40500,42800,40500,36000,
34000,32300,29900,21900,24500,21000,
23300,16000,-6200,-275600,-249500,-149200,
-136500,-129900,-122800,-113900,-109500)
Rate <-
c(3.3,3.4,3.1,3.0,3.1,2.9,2.6,2.5,2.3,2.1,1.6,1.7,1.5,1.7,1.1,-0.4,
-19.5,-17.6,-10.5,-9.6,-9.1,-8.6,-8.0,-7.7)
cesyoy <- data.frame(Month1,annualjobgrowth, Rate)
cesyoy$Month1 <- as.Date(sub("(....)(.*)", "\\1-\\2-01", Month1))
#Chart
library(ggplot2)
coeff <- 3e4 # pick some scaling coefficient
firstces <- ggplot(cesyoy, aes(x=Month1)) +
geom_bar(aes(y=annualjobgrowth),stat="identity", fill="tan1",
colour="sienna3")+
geom_line(aes(y=Rate*coeff),stat="identity")+
geom_text(aes(label=Rate, x=Month1, y=Rate*coeff), colour="black")+
geom_text(aes(label=annualjobgrowth, x=Month1, y=0.9*annualjobgrowth),
colour="black") +
scale_y_continuous(name = "Annual Job Growth",
sec.axis = sec_axis(~./coeff, name="Rate")
)
firstces
由reprex 包(v0.3.0)于 2020 年 12 月 23 日创建
推荐阅读
- c# - 如何使用 SpeechRecognizer EventArgs 变量在 TextBox 中进行换行
- python - 如何检查 2 个 DataFrames 是否关闭?(不相等)
- laravel - 在 Laravel 7 的特使脚本中获取 Dotenv 值
- html - 根据设备宽度的 HR 标签对齐在 IE11 浏览器上不起作用
- java - 使用 .or 和 .link 一起查询不起作用
- excel - 我需要使用 VBA 拖动数组公式并粘贴值,但 excel 不断崩溃
- html - 在带有 CDATA 的网站上显示 XML 文件中的可点击链接
- php - Laravel 6 中此集合实例上不存在属性 [名称]
- security - 有没有办法找出哪些 Azure DevOps 功能/设置正在使用活动的个人访问令牌 (PAT)?
- azure - Azure 函数 v3。.Net Core 3.1 绑定类型“blobTrigger”未注册