截断ggplot中的最高栏

Cpt*_*emo 6 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")
Run Code Online (Sandbox Code Playgroud)

哪个产生

在此输入图像描述

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

Tro*_*roy 6

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

在此处输入图片说明

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)
Run Code Online (Sandbox Code Playgroud)


Did*_*rts 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))
Run Code Online (Sandbox Code Playgroud)

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

ggplot(data=data, aes(x=lbl, y=qnt)) + geom_bar(stat="identity")+
  scale_y_log10() 
Run Code Online (Sandbox Code Playgroud)