使用条件“大小”参数绘制R中的z变量

时间:2018-12-23 11:47:56

标签: r variables plot scatter-plot

我想在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))

enter image description here

关于如何使用R基本图形获得我想要的任何想法?

2 个答案:

答案 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))

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)

答案 1 :(得分:1)

假定您要使用一个圆圈来绘制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)