在 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 轴标签,使它们不会重叠

如何在ggplot2中分别缩放线和点的大小

如何使用 R markdown 将 ggplot2 图形正确渲染成单词?

如何使用 ggplot2

ggplot2:分面的介绍

R数据可视化----ggplot2之标度坐标轴和图例详解