R ggplot2显示不正确的条形图(每12个条形图显示一个最小值)
我正在尝试使用ggplot2和以下数据集制作条形图R ggplot2显示不正确的条形图(每12个条形图显示一个最小值),r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,我正在尝试使用ggplot2和以下数据集制作条形图 Incentive Marginal.Abatement.Cost Tech 1 Status Quo -100 Tech 1 2 Status Quo -99 Tech 2 3 Status Quo -98 Tech 3 4 Status Quo -97 Tech
Incentive Marginal.Abatement.Cost Tech
1 Status Quo -100 Tech 1
2 Status Quo -99 Tech 2
3 Status Quo -98 Tech 3
4 Status Quo -97 Tech 4
5 Status Quo -96 Tech 5
6 Status Quo -95 Tech 6
7 Status Quo -94 Tech 7
8 Status Quo -93 Tech 8
9 Status Quo -92 Tech 9
10 Status Quo -91 Tech 10
11 Status Quo -90 Tech 11
12 Status Quo -89 Tech 12
13 Status Quo -88 Tech 13
14 Status Quo -87 Tech 14
15 Status Quo -85 Tech 15
16 Status Quo -83 Tech 16
17 Status Quo -81 Tech 17
18 Status Quo -79 Tech 18
19 Status Quo -77 Tech 19
20 Status Quo -75 Tech 20
21 Status Quo -73 Tech 21
对于91个观测值,数据集是这样的。当我使用下面的ggplot代码绘制它时,出于某些原因,每12个条显示-100,不管它应该是什么
ggplot(CRIFQuo, aes(x = Tech, y = Marginal.Abatement.Cost)) + geom_bar(stat = "identity")
正如评论者所指出的,R默认情况下按字母顺序对因子级别进行排序,例如
sort(paste0("x",1:12))
## [1] "x1" "x10" "x11" "x12" "x2" "x3" "x4" "x5" ...
另一方面,
gtools::mixedsort(paste0("x",1:12))
## [1] "x1" "x2" "x3" "x4" "x5" "x6" "x7" ...
您可以按如下方式重新排列因子级别
CRIFQuo$x <- with(CRIFQuo,factor(x,levels=gtools::mixedsort(levels(x)))
我假设你的技术专栏是一个因素。它可能没有按您期望的方式订购。尝试
Tech@MrFlick根据x轴判断,ggplot2努力表示所有类别。如果它是数字的,它可能会试图找到漂亮的断点。我真傻@MrFlick。非常感谢。如果我的答案解决了您的问题,我们鼓励您单击复选标记。。。
CRIFQuo$nTech <- as.numeric(gsub("^Tech ","",CRIFQuo$Tech)
ggplot(CRIFQuo, aes(x = nTech, y = Marginal.Abatement.Cost)) ...