#r #plot
#r #график
Вопрос:
Можно ли использовать частоту корреляции для установки значения cex на графике? например, с помощью mtcars. Корреляция между cyl и carb. таблица:
cyl
carb 4 6 8
1 5 2 0
2 6 0 4
3 0 0 3
4 0 4 6
6 0 1 0
8 0 0 1
Как я могу использовать значения (например, 1 для 8 карбюраторов и 8 цилиндров), чтобы задать размер точек в R?
Код довольно прост (я только новичок)
plot(mtcars$cyl, mtcars$carb,
pch = 20,
bty = "L",
cex = what goes here????,
col = carb.col[cyl],
lines(lowess(cyl, carb),
col = "red", lwd = 3)
)
Комментарии:
1. Как вы рисуете график? Вы строите корреляционную матрицу или что-то еще? Поделитесь своим кодом графика, и мы сможем помочь.
2. Код довольно прост ` plot (mtcars $ cyl, mtcars $ carb, pch = 20, bty = «L», cex = что здесь происходит ????, col = carb.col [cyl], lines(lowess(cyl, carb), col = «красный»,lwd = 3) ) `
3. Итак, вы хотите, чтобы размер точек соответствовал количеству автомобилей в точке?
4. да! 🙂 вот и все
Ответ №1:
Я бы предпочел ggplot
, но вот base
решение:
dat = data.frame(with(mtcars, table(cyl, carb)))
dat = subset(dat, Freq > 0)
dat[] = lapply(dat, function(x) as.numeric(as.character(x)))
plot(dat$cyl, dat$carb,
pch = 20,
bty = "L",
cex = dat$Freq,
#col = carb.col[cyl],
lines(lowess(mtcars$cyl, mtcars$carb),
col = "red", lwd = 3)
)
Если вы хотите использовать код в более общем плане, вы, вероятно, захотите масштабировать cex
его, чтобы он имел максимальный размер…
Комментарии:
1. Хорошо, поэтому я должен использовать функцию для создания подмножества. Большое вам спасибо. Это просто великолепно! Так много нужно узнать! И мне также нужно изучить ggplot.
2. Да,
plot
на самом деле ничего не могу сделать, кроме того, что вы ему даете. Вам нужны размеры, основанные на подсчетах? Нужно рассчитать количество. Я бы настоятельно рекомендовалggplot
, однако, как только вы получите основные концепции, это будет намного проще и приятнее, чемbase
.
Ответ №2:
Вот полностью воспроизводимое решение ggplot:
library(ggplot2)
ggplot(subset(reshape2::melt(table(mtcars$carb, mtcars$cyl)), value > 0))
geom_point(aes(Var1, Var2, size = value))
scale_y_continuous(breaks = c(4, 6, 8), name = "cyl")
scale_x_continuous(name = "carb")
scale_size(range = c(2, 8))
theme_bw()
Комментарии:
1. Может быть неплохо отфильтровать значения 0.