[英]R: changing the size of some (but not all) plotted data points according to their weighting
我在R中生成了一個圖,其中每個數據點的大小對應於其各自的權重,例如:
x <- runif(10, 2, 200)
y <- runif(10, 5.0, 7.5)
weighting <- c(1, 1, 1, 1, 1, 10, 15, 15, 25, 25)
我用cex
調整了繪制數據cex
的大小:
plot(x, y, cex = weighting)
由於繪圖中的一些數據點因其高權重因素而非常大,我通過plot(x, y, cex = weighting/5)
減小了所有點的大小,這將給出如下圖:
不幸的是,加權小的數據點現在很小。 我確信有可能只將尺寸限制在那些具有高加權因子的點上,並將其他點( 即加權= 1 )繪制成正常尺寸。 我不知道怎么做,有人可以幫忙嗎?
您還可以查看scale_size_area
中的ggplot
# you need to keep your data in a data.frame
df <- data.frame(x = x, y = y, weighting = weighting)
ggplot(data = df, aes(x = x, y = y, size = weighting)) +
geom_point() +
scale_size_area()
更新,關於cex
和縮放點大小
因為問題的主題是cex
,我借此機會引用@Bert Gunter關於R-help 的帖子 :
“這就是問題所在:為了准確地表示值,”點“=圓形區域必須與該值成比例。也就是說,眼睛”看到“區域而不是半徑作為”大小“點。關於這一點的令人愉快的參考是霍華德韋納1982年左右(不記得確切)美國統計局的文章,“如何繪制數據不好”(或者可能是“繪圖”數據)。
無論如何,使用cex,我不知道用cex = 1.23繪制的點是否是用cex = 1繪制的點的面積或半徑的1.23倍 - 或者兩者都不是。 實際上,它可能會因實現/ OS /圖形字體而異。 所以對我來說,用符號()來“繪制”這一點似乎更好,你可以完全控制它的大小。
顯然,如果我錯了,請告訴我。“結束報價。
在同一個帖子中,@ Gabor Grothendieck指出了這篇很好的文章 ,其中使用了base
函數symbols
。 “[c] ircles [is]按半徑而不是區域大小錯誤的一個例子。大值顯示得更大”,一個“Circles [are]正確按區域大小”,還有一個inches
參數用於設置規模最大的泡沫。 我覺得這可能是一個base
相當於scale_size_area()
在ggplot
。
如何用大小的weighting
log
繪圖?
plot(x, y, cex = log10(weighting))
函數pmax
可能會有所幫助:
minCex <- 1
plot(x, y, cex = pmax(minCex, weighting / 5))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.