簡體   English   中英

如何在R中繪制半填充點(最好使用ggplot)

[英]How to draw half-filled points in R (preferably using ggplot)

我想知道是否可以用多種顏色填充點。 例如,在散點圖中,我想看到每個點上半部分都填充了某種顏色,而下半部分填充了不同的顏色。 如果可能的話,我還想在一些基礎數據的每個點映射中建立填充顏色對(例如,如果數據取值為x,則為某些類型的配對)。 到目前為止,我已經考慮過用兩次日食繪制兩次並分別填充,但沒有運氣。 如果有人能提供幫助我真的很感激。

謝謝!

這里有幾個黑客接近你的要求:

首先,我們使用兩個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()

這是情節的樣子:

在此輸入圖像描述

在此輸入圖像描述

關於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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM