我想在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))
关于如何使用R基本图形获得我想要的任何想法?
答案 0 :(得分:1)
绘图参数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)
答案 1 :(得分:1)
假定您要使用一个圆圈来绘制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)