Ответ 1
Это можно сделать, используя stat_sum
в ggplot2. По умолчанию размер точки представляет собой пропорции. Чтобы получить размер точки для представления счетчиков, используйте size = ..n..
как эстетический. Графы (и пропорции) третьей переменной могут быть получены путем взвешивания третьей переменной (weight = cost
) как эстетической. Некоторые примеры, но сначала некоторые данные.
library(ggplot2)
set.seed = 321
# Generate somme data
df <- expand.grid(x = seq(1:5), y = seq(1:5), KEEP.OUT.ATTRS = FALSE)
df$Count = sample(1:25, 25, replace = F)
library(plyr)
new <- dlply(df, .(Count), function(data) matrix(rep(matrix(c(data$x, data$y), ncol = 2), data$Count), byrow = TRUE, ncol = 2))
df2 <- data.frame(do.call(rbind, new))
df2$cost <- 1:325
Данные содержат единицы, разделенные по двум факторам: X1 и X2; и третью переменную, которая является стоимостью каждой единицы.
Участок 1: отображает пропорцию элементов в каждой комбинации X1 - X2. group=1
сообщает ggplot рассчитать пропорции из общего числа единиц в кадре данных.
ggplot(df2, aes(factor(X1), factor(X2))) +
stat_sum(aes(group = 1))
Участок 2: отображает число элементов в каждой комбинации X1 - X2.
ggplot(df2, aes(factor(X1), factor(X2))) +
stat_sum(aes(size = ..n..))
Участок 3: вычисляет стоимость элементов в каждой комбинации X1 - X2, т.е. weight
третьей переменной.
ggplot(df2, aes(x=factor(X1), y=factor(X2))) +
stat_sum(aes(group = 1, weight = cost, size = ..n..))
Сюжет 4: отображает долю общей стоимости всех элементов в кадре данных при каждой комбинации X1 - X2
ggplot(df2, aes(x=factor(X1), y=factor(X2))) +
stat_sum(aes(group = 1, weight = cost))
Сюжет 5: Соотношение площадей, но вместо того, чтобы доля была вне общей стоимости для всех элементов в кадре данных, эта доля не входит в стоимость элементов в каждой категории X1. То есть, в каждой категории X1, где происходят основные затраты на устройства X2?
ggplot(df2, aes(x=factor(X1), y=factor(X2))) +
stat_sum(aes(group = X1, weight = cost))