截断ggplot中的最高栏

时间:2013-11-27 06:21:23

标签: r ggplot2

请考虑以下

library(ggplot)
data <- data.frame(qnt=c(10,20,22,12,14,9,1000),lbl=c("A","B","C","D","E","F","G"))
ggplot(data=data, aes(x=lbl, y=qnt)) + geom_histogram(stat="identity")

产生

enter image description here

我应该考虑哪些选项来截断情节中的最高条G? (当然向观众解释我做了什么)

2 个答案:

答案 0 :(得分:4)

如果你想摆弄它,你可以使用gridExtra包,并绘制图中2个(或更多)修剪过的部分。我已经修改了边距以使其排成一行,但更好的计划可能是将轴标签格式化为相同的文本宽度,

enter image description here

require(ggplot2)
require(gridExtra)
data <- data.frame(qnt=c(10,20,22,12,14,9,1000),lbl=c("A","B","C","D","E","F","G"))

g1<-ggplot(data=data, aes(x=lbl, y=qnt)) + 
  geom_histogram(stat="identity")+  
  coord_cartesian(ylim=c(-10,50)) + 
  labs(x=NULL, y=NULL)+
  theme(plot.margin=unit(c(2,2,6,3),"mm")) 


g2<-ggplot(data=data, aes(x=lbl, y=qnt)) + 
  geom_histogram(stat="identity") +  
  coord_cartesian(ylim=c(990,1010)) +
  theme(axis.text.x = element_blank(),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        axis.ticks.x = element_blank()) + 
  labs(x=NULL, y=NULL) + 
  theme(plot.margin=unit(c(5,2,0,0),"mm")) 

grid.arrange(g2,g1, heights=c(1/4, 3/4), ncol=1, nrow=2)

答案 1 :(得分:0)

您可以使用coord_cartesian()并更改y轴的限制 - coord_cartesian()会将绘图“缩放”到您将提供的限制。我还使用geom_bar()作为x轴上的绘图因子。

ggplot(data=data, aes(x=lbl, y=qnt)) + geom_bar(stat="identity")+
  coord_cartesian(ylim=c(0,100))

另一种可能性是对y值使用对数标度。

ggplot(data=data, aes(x=lbl, y=qnt)) + geom_bar(stat="identity")+
  scale_y_log10()