删除ggplot中的“​​组”图例

时间:2018-05-24 15:58:28

标签: r ggplot2 legend

因此,一些帖子已经解决了如何在ggplot中删除不需要的图例。

发布到wonderful answer"Remove extra legends in ggplot2" 建议:

  

对于任何映射变量,您可以在相应的import numpy as np import matplotlib.pyplot as plt import scipy.integrate as integrate import scipy.special as special mu1, sigma1 = 0, 0.1 s1 = np.random.normal(mu1, sigma1, 10000) mu2, sigma2 = 0.8, 0.3 s2 = np.random.normal(mu2, sigma2, 10000) plt.figure(1) plt.title('Histogram of a 2D-Gaussian Distribution') bins1 = plt.hist(s1, 100) bins2 = plt.hist(s2, 100) plt.show() plt.figure(2) plt.title('2D-Gaussian Distribution') bins = plt.hist2d(s1, s2, 100) cb = plt.colorbar() cb.set_label('counts in bin') plt.show() 中使用guide = 'none'来压制图例的外观......

但是,我通过添加scale_美学来创建不需要的图例时出现问题。 我尝试了缩放方法,但它似乎不适用于组参数:

group

搜索here没有提供任何有关修改群体美学的正确函数调用的见解。

用户@joran provided以上链接帖子中的以下见解:

  

这是因为could not find function "scale_group" 美学本身不产生任何尺度或指南。它总是在修改别的东西。你永远不会得到group美学的传奇。

示例

所以我可以将group添加到包含show.legend = FALSE的函数调用中,以删除该函数的任何图例,但如果我想要一些其他,则无法解决此问题该调用的部分(即美学)将包含在图例中。

group

为函数调用添加#Set Up Example: library(lme4) library(ggplot2) mod <- lmer(mpg ~ hp + (1 |cyl), data = mtcars) pred <- predict(mod,re.form = NA) pdat <- data.frame(mtcars[,c('hp','cyl')], mpg = pred, up = pred+1, low = pred-1) 按预期工作:

show.legend = F

但是当我想根据相同的gp <- ggplot(data = mtcars, aes(x = hp, y = mpg, color = cyl, group = cyl), show.legend = F) + geom_point(aes(group = cyl),show.legend = F) + facet_wrap(~cyl) + geom_line(data = pdat, aes(group = cyl),show.legend = F, color = 'orange') geom_ribbon填充添加图例时(因此不能使用group参数),我再次获得show.legend = F的传奇......

group

输出:

enter image description here

1 个答案:

答案 0 :(得分:0)

最后一个geom覆盖第一个geom,你可以试试这个

ggplot(data = mtcars, aes(x = hp, y = mpg, color = cyl, group = cyl), show.legend = F) +
  geom_point(aes(group = cyl)) +                             
  facet_wrap(~cyl) + 
  geom_line(data = pdat, aes(group = cyl),color = 'orange') 

gp + geom_ribbon(data = pdat, aes(ymin = low, ymax = up, group = cyl, fill = 'mod'),       alpha = 0.3) + 
  scale_fill_manual(values=c("orange"), name="model")+
  scale_color_continuous(guide ='none')

顺便说一下,我的想法来自您在顶部发布的链接。