我想比较直方图中的不同峰值,因此我将其中两个放入一个alpha = 0.5的图中。 RStudio中的默认输出看起来很好,但是当我使用pdf()或ggsave()甚至CairoPDF()时,结果输出在框周围有实线。在我的情况下,这些实线在缩放pdf显示时有时看起来很难看。我想禁用这些实线,或者至少让线条与填充颜色/ alpha相同。
最小代码示例:
library(ggplot2)
p1<-ggplot()+
geom_histogram(data=diamonds[diamonds$cut == "Premium",],aes(x=depth,fill=cut),alpha=0.5)+
geom_histogram(data=diamonds[diamonds$cut == "Ideal",],aes(x=depth,fill=cut),alpha=0.5)
ggsave("histoline.pdf",p1)
这是输出:
我尝试了各种修改线型和大小的方法,但直到现在还没有成功。
答案 0 :(得分:-1)
解决方法是手动计算直方图并使用ggplot仅显示相应的多边形。它看起来像我想要的,但当然这是一些额外的代码行,你失去了很多ggplot功能。注意:hist()和geom_hist()对bin宽度的处理方式略有不同。
library(ggplot2)
hP <-hist(diamonds[diamonds$cut == "Premium",]$depth,breaks=seq(43,68,1))
hPd<-data.frame(breaks=c(hP$breaks[-1],hP$breaks),counts=c(hP$counts,hP$counts,hP$counts[1]))
hPd<-hPd[order(hPd$breaks),]
hI <- hist(diamonds[diamonds$cut == "Ideal",]$depth,breaks=seq(43,68,1))
hId<-data.frame(breaks=c(hI$breaks[-1],hI$breaks),counts=c(hI$counts,hI$counts,hI$counts[1]))
hId<-hId[order(hId$breaks),]
p1<-ggplot()+
geom_polygon(data=hPd,aes(x=breaks,y=counts),fill="blue",alpha=0.5)+
geom_polygon(data=hId,aes(x=breaks,y=counts),fill="red",alpha=0.5)
# this should yield the same binning behaviour as hist()
# geom_histogram(data=diamonds[diamonds$cut == "Premium",]
#,aes(x=depth),fill="green",binwidth=1,center=0.5,alpha=0.5)
print(p1)
ggsave("histoline.pdf",p1)