【问题标题】:How to draw half-filled points in R (preferably using ggplot)如何在 R 中绘制半填充点(最好使用 ggplot)
【发布时间】:2014-09-23 01:17:55
【问题描述】:

我想知道是否可以用多种颜色填充点。例如,在散点图中,我希望看到每个点的上半部分都填充了某种颜色,而下半部分则填充了不同的颜色。如果可能的话,我还想根据一些基础数据在每个点映射中制作成对的填充颜色(例如,如果数据采用 x 值,则某些类型的配对)。到目前为止,我已经考虑过用两次日食绘制两次并分别填充它们,但没有运气。如果有人可以提供帮助,我将不胜感激。

谢谢!

【问题讨论】:

标签: r plot ggplot2 fill scatter-plot


【解决方案1】:

以下是一些与您所要求的接近的技巧:

首先,我们用两个 unicode 符号绘制上半圆和下半圆。它们的优点是每个点标记的中心是由每个半圆定义的圆的相互中心,但缺点是它们每个都包括另一半圆的边界。结果,其中一个圆圈的轮廓覆盖了另一个圆圈的边缘。您可以通过在其上绘制一个未填充的圆圈来“覆盖”圆形边界,但您需要两个大小略有不同的未填充圆圈才能完全覆盖轮廓圆圈。此外,如果任何点重叠,您将看到这些轮廓圆圈的一部分。 (理想情况下,会有 unicode 填充的半圆符号没有边框,标记的地理中心和(半)圆的中心重合,但我找不到。)

library(ggplot2)

p1 = ggplot(mtcars, aes(wt, mpg)) +
  geom_point(shape="\u25D2", colour="red", size=3) +
  geom_point(shape="\u25D3", colour="blue", size=3) +
  geom_point(shape=1, colour="white", size=3.05) +
  geom_point(shape=1, colour="white", size=2.8) +
  theme_bw()

接下来,我们用两个 unicode 符号绘制半圆,而圆的另一半没有轮廓(我只能找到并排而不是上/下符号)。但这些都有一个缺点,即标记的中心是标记的地理中心,而圆偏离了标记的中心。因此,您必须手动偏移两个圆圈,以便它们相互对齐。

p2 = ggplot(mtcars) +
  geom_point(aes(wt-0.027, mpg), shape="\u25D6", colour="red", size=3) +
  geom_point(aes(wt+0.027, mpg), shape="\u25D7", colour="blue", size=3) +
  theme_bw()

在上面的图中,我对颜色进行了硬编码,但您也可以将它们映射到其他变量。

为了让 unicode 符号正确显示,我使用了带有 Symbola 字体的 Cairo PDF 设备。

cairo_pdf("p1.pdf", family="Symbola", 4,4)
p1
dev.off()

cairo_pdf("p2.pdf", family="Symbola", 4,4)
p2
dev.off()

这些图是这样的:

【讨论】:

    【解决方案2】:

    对eipi10的第二种解决方案的评论:如果您使用Arial Unicode MS而不是Symbola,则不需要水平偏移。 (感谢Laserhedvig 发现这一点。)因此,以下工作:

    library(ggplot2)
    
    my_plot = ggplot(mtcars) +
    geom_point(aes(wt, mpg), shape="\u25D6", colour="red", size=3) +
    geom_point(aes(wt, mpg), shape="\u25D7", colour="blue", size=3) +
    theme_bw()
    
    cairo_pdf("my_plot.pdf", family="Arial Unicode MS", 4,4)
    my_plot
    dev.off()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      相关资源
      最近更新 更多