首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ggrepel标签填充颜色问题

ggrepel标签填充颜色问题
EN

Stack Overflow用户
提问于 2016-06-06 18:03:23
回答 1查看 5.4K关注 0票数 0

我第一次使用ggplot2,我很难让我用ggrepel创建的标签的颜色动态变化。目前,我的代码如下所示:

代码语言:javascript
复制
    ggplot(tstat) + 
        geom_point(aes(Mu, Sigma),size = 5, color = 'black') + 
        geom_label_repel(aes(Mu, Sigma, label = VarNames, fill = factor(Hemisphere)), fontface = 'bold', color = 'white',
               box.padding = unit(0.25, 'lines'),point.padding = unit(0.5, 'lines')) + 
        geom_rangeframe() + 
        theme_tufte() + 
        xlab(expression(paste(mu, "*"))) + 
        ylab(expression(sigma)) + 
        theme(axis.title.x = element_text(vjust=-0.5), axis.title.y = element_text(vjust=1.5)) + 
        ggtitle("Model Sensitivity by Hemisphere")

一般来说,这是很好的工作,除了我强烈不喜欢它给我的牙膏绿色,因为这两个因素之一。我想规定fill = factor(Hemisphere))线的具体颜色,但我不知道怎么做。

我已经尝试过使用scale_colours_manual函数,但是当我将它包含在第3行的geom_label_repel(.....) paratheses中时,程序抱怨说"ggplot2不知道如何处理ScaleDisclin.Scale/ggproto类的数据“,当我将scale_colours_manual行放置在第3行之外时,它根本没有任何效果,就像在这个例子中,它产生了与上面的图相同的情节:

代码语言:javascript
复制
    ggplot(tstat) + 
        geom_point(aes(Mu, Sigma),size = 5, color = 'black') + 
        scale_colour_manual(values = c('blue', 'red')) + 
        geom_label_repel(aes(Mu, Sigma, label = VarNames, fill = factor(Hemisphere)), fontface = 'bold', color = 'white',
               box.padding = unit(0.25, 'lines'),point.padding = unit(0.5, 'lines')) + 
        geom_rangeframe() + 
        theme_tufte() + 
        xlab(expression(paste(mu, "*"))) + 
        ylab(expression(sigma)) + 
        theme(axis.title.x = element_text(vjust=-0.5), axis.title.y = element_text(vjust=1.5)) + 
        ggtitle("Model Sensitivity by Hemisphere")

我知道一定有办法的,但我不知道。谢谢你的帮助!

编辑:根据要求,我附加了一个tstat的dput()。不是一个大的数据框架。

代码语言:javascript
复制
    structure(list(VarNames = structure(c(4L, 1L, 3L, 2L, 5L, 6L, 
    4L, 1L, 3L, 2L, 5L, 6L), .Label = c("Dry Deposition", "MEGAN Acetone", 
    "MEGAN Terpenes", "Monoterpene Yield", "Ocean", "Photolysis"), class = "factor"), 
    Mu = c(2703.09, 8066.01, 6566.6, 19741.7, 5809.6, 14231.8, 1493.56, 3067.54, 3631.32, 9951.06, 8748.95, 7967.93),
    Sigma = c(3478.28, 8883.23, 7276.49, 18454.4, 6218.8, 14989.7, 1925.14, 3410.27, 4017.64, 9289.57, 9354.64, 8403.1),
    Hemisphere = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L),
    .Label = c("Northern", "Southern"), class = "factor")), 
    .Names = c("VarNames", "Mu", "Sigma", "Hemisphere"), 
    class = "data.frame", row.names = c(NA, -12L))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-06 19:15:30

您可以使用scale_fill_manual

代码语言:javascript
复制
tstat <- structure(list(VarNames = structure(c(4L, 1L, 3L, 2L, 5L, 6L, 
    4L, 1L, 3L, 2L, 5L, 6L), .Label = c("Dry Deposition", "MEGAN Acetone", 
    "MEGAN Terpenes", "Monoterpene Yield", "Ocean", "Photolysis"), class = "factor"), 
    Mu = c(2703.09, 8066.01, 6566.6, 19741.7, 5809.6, 14231.8, 1493.56, 3067.54, 3631.32, 9951.06, 8748.95, 7967.93),
    Sigma = c(3478.28, 8883.23, 7276.49, 18454.4, 6218.8, 14989.7, 1925.14, 3410.27, 4017.64, 9289.57, 9354.64, 8403.1),
    Hemisphere = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L),
    .Label = c("Northern", "Southern"), class = "factor")), 
    .Names = c("VarNames", "Mu", "Sigma", "Hemisphere"), 
    class = "data.frame", row.names = c(NA, -12L))
library(ggplot2)
library(ggrepel)
library(ggthemes)
ggplot(tstat) + 
  geom_point(aes(Mu, Sigma),size = 5, color = 'black') + 
  geom_label_repel(aes(Mu, Sigma, label = VarNames, fill = factor(Hemisphere)), fontface = 'bold', color = 'white',
         box.padding = unit(0.25, 'lines'),point.padding = unit(0.5, 'lines')) + 
  geom_rangeframe() + 
  theme_tufte() + 
  xlab(expression(paste(mu, "*"))) + 
  ylab(expression(sigma)) + 
  theme(axis.title.x = element_text(vjust=-0.5), axis.title.y = element_text(vjust=1.5)) + 
  ggtitle("Model Sensitivity by Hemisphere") + 
  scale_fill_manual(values = setNames(c("lightblue", "darkgreen"), levels(tstat$Hemisphere)))

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37664025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档