使用ggplot2制图时如何添加黑色轮廓线

3
我是从另一个论坛(https://www.biostars.org/p/268514/#268559)转贴而来,那里有一些有用的评论,但我仍然对ggplot2的输出感到困惑。
我试图在圆形上获得简单的黑色轮廓,但我的代码现在给出了随机颜色,并似乎忽略了我的scale_colour_manual(values = cols)参数。当我运行以下代码时:
# creating color palette

> cols <- c("red" = "red", "orange" = "orange", "nonsignificant" = "darkgrey", "Increased" = "#00B2FF", "Decreased" = "#00B2FF")

# Make a basic ggplot2 object

> vol <- ggplot(data, aes(x = lfc, y = pval, color = color, labels=gene))

# inserting mnaual colors as per color pallette  with term "scale_colour_manual(values = cols)" below

> vol +   
  ggtitle(label = "Volcano Plot", subtitle = "Colored by fold-change direction") +
  geom_point(size = 2.5, alpha = 1, na.rm = T) +
  scale_colour_manual(values = cols) +
  theme_bw(base_size = 14) + 
  theme(legend.position = "right") + 
  xlab(expression(log[2]("VitD" / "Carrier"))) + 
  ylab(expression(-log[10]("FDR"))) + # Change Y-Axis label
  geom_hline(yintercept = 1, colour="#990000", linetype="dashed") + geom_vline(xintercept = 0.586, colour="#990000", linetype="dashed") + geom_vline(xintercept = -0.586, colour="#990000", linetype="dashed") + 
  scale_y_continuous(trans = "log1p") 

我使用定义的颜色板得到了一个漂亮的图表:

Color volcano plot

接下来,我想给这些点添加边框,所以我只需要更改两处代码。首先,在开始时,我使用“fill = color”而不是“color = color”创建基本的ggplot对象。
> vol <- ggplot(data, aes(x = lfc, y = pval, fill = color, labels=gene))

我在"geom_point"参数中添加了"shape = 21, colour = "black"":

> vol +   
  ggtitle(label = "Volcano Plot", subtitle = "Colored by fold-change direction") +
  geom_point(size = 2.5, alpha = 1, na.rm = T, shape = 21, colour = "black") +
  scale_colour_manual(values = cols) +
  theme_bw(base_size = 14) + 
  theme(legend.position = "right") + 
  xlab(expression(log[2]("VitD" / "Carrier"))) + 
  ylab(expression(-log[10]("FDR"))) + l
  geom_hline(yintercept = 1, colour="#990000", linetype="dashed") + geom_vline(xintercept = 0.586, colour="#990000", linetype="dashed") + geom_vline(xintercept = -0.586, colour="#990000", linetype="dashed") + 
  scale_y_continuous(trans = "log1p") 

突然间我有了一个情节,似乎是随机选择了5种颜色; 如果我打印这些颜色:

print(cols)

red      orange         nonsignificant      Increased      Decreased 
"red"    "orange"      "darkgrey"           "#00B2FF"      "#00B2FF" 

调色板仍然存在。

可能是在点周围放置边框的重复问题。 - M--
2个回答

5

当你将color = cols更改为fill = cols时,你还应该将scale_color_manual(...)更改为scale_fill_manual(...)


2

我通常解决这个问题的方法是在彩色点后面添加更大的黑点。

ggplot(mtcars, aes(wt, qsec)) +
    geom_point(color = "black", size = 2.5) +
    geom_point(size = 2, aes(color = factor(am)))

enter image description here


谢谢回复,这个方法是可行的,但是当我有很多点时,比如在图表的右下角和左下角,这些黑色圆圈就会在所有数据点的后面。 - reubenmcg
2
有时候,我更喜欢使用这种方法,而不是使用既有描边颜色又有填充的形状。当你有一个密集的点群时,最终会得到一个用单一黑色轮廓线勾勒出来的模糊填充形状,这看起来比多个重叠的填充圆更好看。 - Brian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接