2016-05-23 38 views
4

我使用ggplot爲所有點繪製了一個常數透明度值的許多點。ggplot阿爾法水平在填充和點的邊界上出現不同

我發現圓形點的填充比它們各自的邊界更透明,因此邊界明顯比填充明顯(我在黑色背景上繪製光圈)。

The effect is that they look like rings rather than semi-transparent circles.

library(ggplot2) 
set.seed(123) 
data <- data.frame(x = sample(1:100,2000, replace=T), 
        y = sample(1:100,2000, replace=T)) 
ggplot(data, aes(x,y)) + 
    geom_point(alpha=0.2, color="dodgerblue", fill="dodgerblue", size=4) + 
    theme(panel.background = element_rect(fill = 'black', colour = 'black')) 

我不知道爲什麼它這樣做,這樣的信息,爲什麼發生這種情況將是巨大的。

可能的解決方案是製作邊框並填充相同的透明度,或者使邊框100%透明(將邊框設置爲背景顏色,會在點重疊時破壞視覺效果)。我不知道如何做到這一點。

*編輯下面*

觀看的觀衆RStudio或保存的PNG的情節時,出現問題的討論之後。它在查看保存的PDF時不會顯示。但是,我的真實數據集很大,矢量圖形在繪製大量點時效率很低,所以我很樂意提供其他解決方案!

+0

請使用'dput'將足夠數量的數據集用於測試。 –

+0

@ 42只需添加足夠的代碼即可完全重現問題。 – conor

+0

@baptiste設置'color = NA'代替當前的'color =「dodgerblue」'使點完全消失,而不僅僅是邊界。你能否舉一個如何應用你的第二個建議的例子? – conor

回答

3

更改行程爲0似乎有HTE期望的結果:

ggplot(data, aes(x,y)) + 
    geom_point(alpha=0.2, colour="dodgerblue", fill=mycol, stroke=0, size=5) + 
    theme(panel.background = element_rect(fill = 'black', colour = 'black')) 
+0

這似乎會略微減少標記的大小,但「環」效果對我來說依然很清晰。點上有明顯的邊界。我只是一個半透明的點。 – conor

+0

我沒有看到任何戒指。我想知道你是否看到你的觀衆的神器或幻覺。你有沒有嘗試保存到矢量圖形文件格式並把它炸掉? –

+0

偉大的一點。保存爲PDF並查看該問題後,我看不到該問題,無論是否帶有「筆劃」參數。我正在使用內置的RStudio查看器,並且在保存爲PNG時問題仍然存在。但是,由於我的實際數據中有大量的點數和矢量圖形對點的低效率,我希望能夠保存爲例如。 PNG沒有這個問題。我會編輯我的問題來反映這一點。 – conor

1

與@ 42討論後,該解決方案是,PNG默認已經足夠低,分辨率標記和圖像背景之間的邊界有一個混合神器(可能不是正確的術語)。

增加dpi可解決問題,並且添加stroke=0看起來好一點。

ggsave("plot.png", 
    ggplot(data, aes(x,y)) + 
    geom_point(alpha=0.2, color="dodgerblue", fill="dodgerblue", size=4, stroke=0) + 
    theme(panel.background = element_rect(fill = 'black', colour = 'black')), 
    dpi=1200) 
0

既然你想時時彩&透明度做固定對我來說,也是在RStudio打印預覽窗口最簡單的事情磁盤只是使用選項shape=16

d <- data.frame(x = sample(1:100,2000, replace=T), 
        y = sample(1:100,2000, replace=T)) 
ggplot(d, aes(x,y)) + 
    geom_point(alpha=0.2, color="dodgerblue", size=4, shape=16) + 
    theme(panel.background = element_rect(fill = 'black', colour = 'black')) 

PS使用shape=21和100%半透明顏色 color=adjustcolor("dodgerblue",alpha.f=0)原則上也應該可以工作,但由於某些原因在RStudio圖預覽窗口中不能正確顯示,並且添加stroke=0也似乎不會幫助