r - 如何在R中绘制半填充点(最好使用ggplot)

标签 r plot ggplot2 fill scatter-plot

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

谢谢!

最佳答案

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

首先,我们用两个 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()

以下是绘图的样子:

enter image description here

enter image description here

关于r - 如何在R中绘制半填充点(最好使用ggplot),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25053072/

相关文章:

r - 如何计算未排序数据集的中位数

r - 在数据帧上使用应用时如何避免隐式字符转换

r - 如何正确地将标签添加到 ggplot2 水平箱线图

r - ggplot 中的分组条形图

r - 将样本 n 值添加到 R 中的 Likert 图

r - 如何让全局环境中定义的函数访问其调用函数环境中定义的变量?

R 数学运算 NA 值

r - 在 R 中的 x 轴上绘制带有日期的图形

python - 在曲面图上绘制网格?

javascript - Highcharts.js 带有平均线的子图