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

时间:2013-01-18 15:34:53

标签: r ggplot2

我使用下面附带的数据来制作boxplot。 数据链接 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文件中标题“region”的顺序相匹配。

ggplot中是否有允许控制的选项?

非常感谢

1 个答案:

答案 0 :(得分:9)

基本上,您只需要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轴上的数字响应布局更多大多数观众都很熟悉。