r - 使用ggplot时,保持与数据文件中的顺序相同

标签 r ggplot2

我正在使用下面的附加数据生成箱线图。
数据链接
https://www.dropbox.com/s/dt1nxnkhq90nea4/GTAP_Sims.csv

到目前为止,我已经使用了以下代码:

# Distribution of EV for all regions under the BASE scenario

evBASE.f <- subset(ccwelfrsts, tradlib =="BASE")
p <- ggplot(data = evBASE.f, aes(factor(region), ev))
p + geom_boxplot() + 
    theme(axis.text.x = element_text(colour = 'black', angle = 90, size = 16)) +
    theme(axis.text.y = element_text(colour = 'black', size = 16))

它重现了一个看起来如下的图:
阴谋
文件:///C:/Users/iouraich/Documents/ggplot_Results.htm

我在这里寻找的是使图中的x轴与csv文件中标题“区域”的顺序匹配。

ggplot中是否有任何选项可以对此进行控制?

非常感谢

最佳答案

基本上,您只需要region <- factor(region,levels=unique(region))即可按照它们在数据中出现的顺序指定级别。

基于您提供的数据的完整解决方案:

ccwelfrsts <- read.csv("GTAP_Sims.csv")
## unmangle data
ccwelfrsts[5:8] <- sapply(ccwelfrsts[5:8],as.numeric)
evBASE.f <- droplevels(subset(ccwelfrsts, tradlib =="BASE"))
## reorder region levels
evBASE.f <- transform(evBASE.f,region=factor(region,levels=unique(region)))
library(ggplot2)
theme_set(theme_bw())
p <- ggplot(data = evBASE.f, aes(region, ev))
p + geom_boxplot() + 
    theme(axis.text.x = element_text(colour = 'black', angle = 90, size = 16)) +
    theme(axis.text.y = element_text(colour = 'black', size = 16))+
    xlab("")

您可以考虑切换图形的方向(通过coord_flip或通过显式切换x和y轴映射)以使标签更易于阅读,尽管大多数观看者对y轴上带有数字响应的布局更为熟悉。

关于r - 使用ggplot时,保持与数据文件中的顺序相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14402242/

相关文章:

r - 如何在 R 中抑制 download.file() "trying URL..."消息?

r - 给以整数 r 结尾的列名加 1

r - 错误 : Aesthetics must either be length one, 或省略 NA 时与 dataProblems:personCategoryz 相同的长度

r - ggplot2:对图进行排序

r - 将 MASS::fitdistr 按一个因子应用于多个数据

正则表达式字符串以匹配 R 中的列表

r - 如何使用 for 循环创建向量

r - 升级到 2.0 版后 ggplot2 错误

r - 使用 do.call 在 R 中合并多个 csv 文件

r - 使用 geom_segment 创建时间轴可视化