Изобразите переменную z в ​​R с условным аргументом «размер» - PullRequest
0 голосов
/ 23 декабря 2018

Я хочу создать диаграмму рассеяния в R с третьей переменной "z", которая нанесена точками разного размера в соответствии с диапазоном их значений.

Вот кадр данных df У меня есть:

    mean.temp mean.lfk  LKZ
v3   24.33958 69.43333 12.5
v7   25.80208 67.76250 53.3
v8   26.24583 66.85000 12.5
v11  21.52917 42.59375 35.0
v13  23.96042 66.92917 20.0
v14  24.16042 66.74375 56.7
v15  26.88542 69.69583 10.0
v16  26.45417 72.37292 56.7
v17  24.92708 64.59375  6.7
v18  25.77391 65.64348  3.3
v21  23.11290 71.37419  0.5

Я хочу использовать mean.temp и mean.lfk вдоль оси x и y, но я не хочу на самом деле отображать их значения.Вместо этого я хочу построить LKZ как переменную "z".Различные значения LKZ должны отображаться точками разного размера, т. Е. 0.5 - это самая маленькая точка, а 56.7 - самая большая точка.

Я не очень далеко продвинулся, и мне удалось получить только этокусок кода, который явно не работает, как вы можете видеть на рисунке ниже:

plot(df$mean.temp, df$mean.lfk, pch = paste(df$LKZ))

enter image description here

Любая идея о том, как получить то, что я хочус базовой графикой R?

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Предполагая, что вы хотите построить график y = mean.lfk против x = mean.temp, используя кружок, размер которого указывает значение LKZ, используйте cex=, чтобы указать этот размер.

Теперь, используя df, воспроизводимый в примечании в конце, попробуйте это (или поочередно попробуйте cex = log(LKZ)).

plot(mean.lfk ~ mean.temp, df, cex = LKZ/10)

screenshot

Примечание

Lines <- "
    mean.temp mean.lfk  LKZ
v3   24.33958 69.43333 12.5
v7   25.80208 67.76250 53.3
v8   26.24583 66.85000 12.5
v11  21.52917 42.59375 35.0
v13  23.96042 66.92917 20.0
v14  24.16042 66.74375 56.7
v15  26.88542 69.69583 10.0
v16  26.45417 72.37292 56.7
v17  24.92708 64.59375  6.7
v18  25.77391 65.64348  3.3
v21  23.11290 71.37419  0.5"
df <- read.table(text = Lines)
0 голосов
/ 23 декабря 2018

Аргумент построения cex управляет размером символа.Поскольку ваши размеры варьируются в 100 раз, в моем примере ниже размер точки был пропорционален квадратному корню из LKZ.Кроме того, более крупные точки затемняют более мелкие, поэтому я добавил некоторую прозрачность в точки, чтобы вы могли видеть их все.

plot(df[,1:2], pch=16, cex=sqrt(df$LKZ), col="#00000044",
    xlim=c(21,27), ylim=c(40,75))

Size proportional to LKZ

Данные

df = read.table(text="    mean.temp mean.lfk  LKZ
v3   24.33958 69.43333 12.5
v7   25.80208 67.76250 53.3
v8   26.24583 66.85000 12.5
v11  21.52917 42.59375 35.0
v13  23.96042 66.92917 20.0
v14  24.16042 66.74375 56.7
v15  26.88542 69.69583 10.0
v16  26.45417 72.37292 56.7
v17  24.92708 64.59375  6.7
v18  25.77391 65.64348  3.3
v21  23.11290 71.37419  0.5", 
header=TRUE)
...