在我的理解中,ggplot的stat方法取值爲數組並計算可以通過某些美學顯示的新值。我希望點的大小與每個組內的數值變量的總和成比例(獨特的x, y
組合)。我很驚訝,每當一組中有多個值時,繪製了多個點,而不是代表所有點的總和。這裏是一個最小的工作示例:如何將ggplot stat_sum映射爲尺寸美學?
ex_data <- data.frame(
a = sort(rep(letters[1:4], 5)),
b = rep(letters[6:7], 10),
c = rnorm(20, 1000, 500),
d = rep(c('h', 'h', 'i', 'i'), 5)
)
p <- ggplot(ex_data,
aes(x = b, y = a, size = log10(c), color = d, shape = d)) +
geom_point(stat = 'sum', alpha = 0.33) +
scale_radius(guide = guide_legend(title = 'c (log)')) +
scale_color_manual(values = c('cyan', 'magenta'),
guide = guide_legend(title = 'd'),
labels = c('h', 'i')) +
scale_shape_manual(values = c(15, 18), guide = FALSE) +
theme_bw()
print(p)
由於低阿爾法它是可見的,對於例如在c-f
和a-f
相同顏色的多個點被繪製在彼此之上。我如何能夠在每個位置獲得每種顏色的一個點,這些標記的大小代表該組中所有變量值的總和?
哪有一點,如果你正在映射兩種顏色在那個座標上?該點有什麼顏色?什麼形狀? – Axeman
我指的是每種顏色的一個點,但不是同一位置的相同顏色的兩個點 – deeenes
一般來說,我發現'stat_summary'對'y'美學中的簡單彙總函數很有用。這聽起來像是你想將數據集總結到每個'a' /'b' /'d'組合的'c'的單個值。在ggplot之外,這可能是最簡單的,使用匯總數據集來創建所需的圖。 – aosmith