在 ggplot2 中,使用两种图形类型时如何缩放图例?
Posted
技术标签:
【中文标题】在 ggplot2 中,使用两种图形类型时如何缩放图例?【英文标题】:In ggplot2 how can I scale the legend when using two graph types? 【发布时间】:2018-02-07 07:06:42 【问题描述】:我将 ggplot2 与 + geom_line() + geom_point() 一起使用。我已经确定了颜色/形状,但我无法适当地缩放图例。如果我什么都不做,它会很小,如果我放大它,颜色会阻塞形状。
例如:
您可以看到形状和颜色都在图例中,但是形状被颜色覆盖了。我想在图例中绘制适当颜色的形状,但不知道该怎么做。
我的剧情被淹没如下:
ggplot(data=melted, aes(x=gene, y=value, colour=variable, shape=variable, group = variable, stroke=3, reorder(gene, value)))
+ theme_solarized()
+ scale_colour_solarized("blue")
+ geom_line()
+ geom_point()
+ theme(axis.text.x = element_text(angle = 90, hjust = 1), plot.title = element_text(size=16, face="bold"), legend.title=element_blank(), legend.text=element_text(size=20))
+ ggtitle('Signiture Profiles')
+ labs(x="Gene", y=expression(paste("Expression"), title="Expression"))
+ scale_colour_manual(name = "Virus / Time", labels = c("Mock", "ACali09_day1", "ACali09_day3", "ACali09_day8", "AShng113_day1", "AShng113_day3", "AShng113_day8", "AChkShng113_day1", "AChkShng113_day3", "AChkShng113_day8"), values = c("#ff420e","#89da59","#89da59","#89da59","#376467","#376467","#376467","#00293c","#00293c","#00293c"))
+ scale_shape_manual(name = "Virus / Time", labels = c("Mock", "ACali09_day1", "ACali09_day3", "ACali09_day8", "AShng113_day1", "AShng113_day3", "AShng113_day8", "AChkShng113_day1", "AChkShng113_day3", "AChkShng113_day8"), values = c(0,1,2,3,1,2,3,1,2,3))
+ guides(colour = guide_legend(override.aes = list(size=12)))
这里是一些请求的示例数据:Example Data
提前感谢您提供的任何帮助。
【问题讨论】:
您能否在您的问题中添加一个示例数据集以供我们使用? 尝试:guides(shape = guide_legend(override.aes = list(size=12)))
而不是 guides(colour = guide_legend(override.aes = list(size=12)))
@Mosquite 好主意,不幸的是它没有改变任何东西。 :(
@aosmith 添加了示例数据。
【参考方案1】:
您或许可以重新考虑如何区分变量。
您可以执行以下操作。请注意第一行中的更改,我将variable
的组成部分分开,而不是通过scale
语句设置颜色和形状。 (我没有你的主题,所以我把它省略了)。
ggplot(data=melted, aes(x=gene,
y=value,
colour=gsub("_.*","",variable),
shape=gsub(".*_","",variable),
group = variable,
stroke=3,
reorder(gene, value))) +
geom_line() +
geom_point() +
theme(axis.text.x = element_text(angle = 90, hjust = 1),
plot.title = element_text(size=16, face="bold"),
legend.title=element_blank(),
legend.text=element_text(size=20)) +
ggtitle('Signiture Profiles') +
labs(x="Gene", y=expression(paste("Expression"), title="Expression")) +
guides(shape = guide_legend(override.aes = list(size=5)),
colour = guide_legend(override.aes = list(size=5)))
【讨论】:
谢谢,这对剧情有很大的改进。以上是关于在 ggplot2 中,使用两种图形类型时如何缩放图例?的主要内容,如果未能解决你的问题,请参考以下文章
ggplot2:如何动态包装/调整大小/重新缩放 x 轴标签,使它们不会重叠