R ggplot2显示不正确的条形图(每12个条形图显示一个最小值)

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

我正在尝试使用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 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)) ...