簡體   English   中英

在點周圍放置邊框

[英]Place a border around points

我想使用 ggplot2 在基於數據填充的散點圖上的點周圍放置黑色邊框。 另外,我想避免黑色邊框的圖例條目,因為它將在每個點上。 基本上我正在尋找這個情節,但每個點周圍都有一個黑色邊框。

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y))+geom_point(aes(colour=id), size=12)

我想要的情節,除了點周圍沒有邊界

作為獎勵,我不想有黑色邊框的圖例條目。 我最好的嘗試是:

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y))+geom_point(aes(fill=id, colour="black"), size=12)

這使:

根本不是我想要的情節

我不明白為什么這沒有給我我想要的東西,更糟糕的是(對於我在 ggplot2 中的教育)我不明白為什么它似乎沒有將填充顏色映射到任何東西! 有什么幫助嗎?

也許如果我能得到正確的輪廓和填充映射,我可以使用像這里最后一組數字中的一個 hack 來關閉圖例。

這有點晦澀,但你必須使用pch >20(我認為 21:25 是相關的形狀): fill控制內部colour (u)環和colour控制邊緣周圍的線。

(g0 <- ggplot(df, aes(x=x, y=y))+geom_point(aes(fill=id), 
       colour="black",pch=21, size=5))

更新:使用最近的 ggplot2 版本(例如 2.0.0,不知道它可以追溯到多遠)默認指南是一個顏色條。 需要g0 + guides(fill="legend")來獲得帶有點的圖例,如圖所示。 默認中斷也發生了變化:要准確復制此圖,您需要g0 + scale_fill_continuous(guide="legend",breaks=seq(0.2,0.8,by=0.1)) ...

在此處輸入圖片說明

相關但不相同: 如何在 R 中創建帶有自定義點的圖? . 該問題的公認答案使用@joran 的答案中顯示的分層技術,但(IMO)@jbaums 使用pch=21技術的答案更勝一籌。 (我認為shape=21pch=21的替代方案,甚至可能更pch=21 。)

PS如果你想絕對設置它而不是根據某個變量的值,你應該把colour放在映射之外aes位)......

第一個問題是給我的:

ggplot(df, aes(x=x, y=y)) + 
    geom_point(aes(colour=id), size=12) + 
    geom_point(shape = 1,size = 12,colour = "black")

而且,哦,你想要一個額外的傳奇。 我認為這樣做:

在此處輸入圖片說明

我遇到了同樣的問題,但我也需要一個允許抖動的解決方案。 為此,您確實需要使用一個 pch,它是一個帶有邊框的填充形狀和來自 gridExtra 包的 grid.edit 函數。 使用您的示例:

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y, fill=id))+geom_point(pch=21, colour="Black", size=12)

library(gridExtra)
grid.edit("geom_point.points", grep = TRUE, gp = gpar(lwd = 3))

我有同樣的問題,但也許因為我使用的是帶有緯度和經度的 geom_map,所以截至 2020 年 1 月的其他答案對我不起作用。

重申這個問題,以下在點周圍沒有黑色輪廓:

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y))+geom_point(aes(colour=id), size=12) 

如果我同時聲明顏色和填充美學,然后使用形狀 21,問題就解決了。

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(colour=id, fill=id), 
  shape = 21,size = 12,colour = "black")

用黑色勾勒的點

如果您想要更多控制(例如,具有各種形狀和透明度的點的邊界),請使用形狀的fill美學21:25

ggplot(aes(x = Sepal.Length, y = Petal.Width, fill = Species, shape = Species), data = iris) + # notice: fill
    geom_point(size = 4, alpha = 0.5) + # transparent point
    geom_point(size = 4, fill = NA, colour = "black") + # black border
    scale_shape_manual(values = c(21:23)) + # enable fill aesthetic
    theme_classic()

暫無
暫無

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

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