我想我的问题很简单,但我无法弄清楚。我有一个年度数据,我想用ggplot2 barplot显示。由于第一年的条形太靠近y轴,我想扩展x轴的极限。但是,如果应用,我的X轴值会消失,即使是theme()规范也不会产生结果......我不明白为什么?可能的原因是我正在使用"年"作为因素?但对于条形表示,我需要使用离散比例......
谢谢!
# reproductible exemple
year<-c(2003:2010)
manag<-rep(c("A", "B"), 4)
np<-rep(c(0,1), each = 4)
val<- c(10,20,50,10,14,80,19,25)
df<-data.frame(cbind(year,
manag, np, val))
require(ggplot2)
a<-ggplot(data = df, aes(x = as.factor(year), y = val)) +
ggtitle("MISSING X VALUES!!!") +
geom_bar(stat = "identity") +
scale_x_discrete(limits= c(2002:2015))
# theme(axis.text.x=element_text(size = 8, colour = "black", angle = 90)
b<-ggplot(data = df, aes(x = as.factor(year), y = val)) +
geom_bar(stat = "identity") +
ggtitle("NOT EXPANDED X LIMITS")
grid.arrange(a, b, ncol = 2)
答案 0 :(得分:3)
首先需要清理data.frame代码。 删除cbind - cbind将所有内容都变成了一个因子
df<-data.frame(cbind(year,
manag, np, val))
所以它看起来像
df <- data.frame(year, manag, np, val))
然后x轴将是连续的,例如
ggplot(df, aes(year, val))+geom_bar(stat="identity")+
scale_x_continuous(breaks = c(2002:2010),
labels = factor(2002:2010),
limits = c(2002,2011))
您可以将标签更改为
labels = c("", factor(2003:2010))
如果您不希望2002年在那里
答案 1 :(得分:0)
基于@BWilliams答案的整个代码,垂直调整x刻度和x标签,用于条形图,基于@BWilliams答案:
year<-c(2003:2010)
manag<-rep(c("A", "B"), 4)
np<-rep(c(0,1), each = 4)
val<- c(10,20,50,10,14,80,19,25)
df<-data.frame(year, manag, np, val)
ggplot(df, aes(year, val))+geom_bar(stat="identity")+
facet_grid(np ~ manag) +
scale_x_continuous(breaks = c(2003:2010),
#labels = c("", factor(2003:2010)),
labels = factor(2003:2010),
limits = c(2002,2011)) +
theme(axis.text.x=element_text(size = 8, colour = "black", angle = 90, hjust = 0,
vjust = 0.5)) # center the x tick with label name