【问题标题】:In ggplot2 how can I scale the legend when using two graph types?在 ggplot2 中,使用两种图形类型时如何缩放图例?
【发布时间】: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 添加了示例数据。

标签: r ggplot2 visualization legend


【解决方案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)))

【讨论】:

  • 谢谢,这对剧情有很大的改进。
猜你喜欢
  • 2016-03-20
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多