簡體   English   中英

R:根據它們的權重改變一些(但不是全部)繪制數據點的大小

[英]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

不幸的是,加權小的數據點現在很小。 我確信有可能只將尺寸限制在那些具有高加權因子的點上,並將其他點( 即加權= 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.

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