gpt4 book ai didi

r - 图例显示带有 geom_vline 的意外黑线

转载 作者:行者123 更新时间:2023-12-05 00:22:23 27 4
gpt4 key购买 nike

在查看了 StackOverflow 上提供的一些答案后,我一直试图添加一个额外的图例,但不知何故我无法完成这项工作。我正在使用以下代码:

 x_breaks <- seq(as.Date("2010/1/1"), as.Date("2015/4/1"), "months")
x_labels <- as.character(x_breaks, format="%b%y")

vLines <- data.frame('Date'=as.Date('2014/1/1'))
vLines <- rbind(vLines,vLines,vLines,vLines)
vLines$Date[1] <- as.Date('2010/6/7')
vLines$Date[2] <- as.Date('2012/1/1')
vLines$Date[3] <- as.Date('2012/10/1')
vLines$Date[4] <- as.Date('2013/1/1')

vLines$grp <- c('Complex Cases','Breach of Contract Cases','PI, PD and WD cases','All other civil cases')

p <- ggplot(toPlot[1:296,], aes(x=Date, y=value, fill=OrderType)) + scale_x_date(breaks=x_breaks, labels=x_labels) +
geom_area(stat="identity",alpha=0.6) +
# scale_y_continuous(labels = percent_format()) +
ggtitle('Some Title') + theme_bw() + ylab('Transactions') + xlab('') +
theme(axis.text.y=element_text(hjust=0, angle=0),
axis.text.x = element_text(hjust=1, angle=45),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_blank(),
panel.grid.major.x=element_line(color='grey90',linetype='dashed'),
panel.grid.major.y=element_line(color='grey90',linetype='dashed'),
plot.title=element_text(size=20),
axis.text=element_text(size=15),
legend.text=element_text(size=20),
legend.key=element_blank(),
legend.title=element_blank()) +
scale_fill_manual(values=c("#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a")) +
geom_vline(data=vLines,aes(xintercept=as.numeric(Date),color=grp,linetype=grp),size=1,show_guide=TRUE)
p

得到以下情节:
enter image description here
dput(head(toPlot))的输出是:
structure(list(Date = structure(c(14853, 14914, 15034, 15187, 
15309, 15340), class = "Date"), OrderType = structure(c(1L, 1L,
1L, 1L, 1L, 1L), .Label = c("Delivery", "eFiling", "Filing",
"ProcessServing", "Research"), class = "factor"), variable = structure(c(1L,
1L, 1L, 1L, 1L, 1L), .Label = c("Orders", "Revenue"), class = "factor"),
value = c(1, 1, 1, 1, 18, 37)), .Names = c("Date", "OrderType",
"variable", "value"), row.names = c(NA, 6L), class = "data.frame")

如何从图例中删除这条黑色丑陋的线条?

可以找到我正在使用的数据集 here .

对此的任何指示将不胜感激。

最佳答案

怎么样show_guide=FALSE在:

geom_vline(data=vLines,aes(xintercept=as.numeric(Date),color=grp,linetype=grp),size=1,show_guide=FALSE)

正如@eipi10 在评论中提到的,这个解决方案在这种情况下不起作用,因为它还会隐藏 vline 图例。

ggplot绘制一个图例,它尝试使用所有可能的属性(填充、颜色、线型),因此绘制 fill传说你也得到 vline线条属性(颜色和线型)。

你能做什么?正如您在@eipi10 的答案中所看到的,您可以添加一个 guides 命令来告诉 ggplot 对于填充比例,颜色属性(vline 图例使用的属性)必须是不可见的(NA)。
guides(fill=guide_legend(override.aes=list(colour=NA)))

但是您可以在“scale_fill_manual”中添加指南来实现相同的效果:
scale_fill_manual(values=c("#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a")), 
guide=guide_legend(override.aes = list(colour=NA)) +

另一种解决方案是绘制 geom_area之后 geom_vline ,正如这里的建议: how to remove line from fill scale legend using geom_vline and geom_histogram r ggplot2

这是一个不错的解决方案,您也可以尝试在不绘制两次 vline 的情况下执行此操作。 ,但这在您的情况下不会很好用,因为您有 alpha=0.6值(value)。因此,对于此解决方案,您还需要使用 override.aes ,有这样的事情:
scale_fill_manual(values=c("#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a"),
guide=guide_legend(override.aes=list(alpha=1))) +
geom_vline(data=vLines,aes(xintercept=as.numeric(Date),color=grp,linetype=grp),size=1,show_guide=TRUE)+
geom_area(stat="identity",alpha=0.6)

或将两者颠倒 geom并添加:
guides(fill=guide_legend(override.aes=list(alpha=1)))

我写这个只是因为我花了一些时间试图弄清楚这个问题,为什么要使用 guide_legend(override.aes)如果有其他解决方案。写作是安定下来的好方法。

关于r - 图例显示带有 geom_vline 的意外黑线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975176/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com