使用条件 "size" 参数在 R 中绘制 z 变量

Plot z variable in R with conditional "size" argument

我想在 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.tempmean.lfk 作为 x 和 y 轴,但我不想实际绘制它们的值。相反,我想将 LKZ 绘制为 "z" 变量。 LKZ 的不同值应由不同大小的点可视化,即 0.5 是最小的点,56.7 是最大的点。

我没走多远,只得到了这段代码,如下图所示,它显然不起作用:

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

知道如何使用 R 基础图形获得我想要的东西吗?

绘图参数cex 控制字符的大小。由于您的大小范围为 100 倍,因此在下面的示例中,我将点大小与 LKZ 的平方根成正比。此外,较大的点会遮挡较小的点,因此我为这些点添加了一些透明度,以便您可以看到它们。

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

数据

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)

假设您要绘制 y = mean.lfk 对 x = mean.temp 使用圆圈,其大小表示 LKZ 的值,使用 cex= 指定该大小。

现在,使用最后注释中重复显示的 df 试试这个(或者交替尝试 cex = log(LKZ))。

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

备注

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)