如何在R中绘制分层散点图?
我正在学习R,想画一个大数据帧(约55000行)的散点图。我在如何在R中绘制分层散点图?,r,scatter-plot,R,Scatter Plot,我正在学习R,想画一个大数据帧(约55000行)的散点图。我在汽车中使用散点图: library(car) d=read.csv("patches.csv", header=T) scatterplot(energy ~ homogenity | label, data=d, ylab="energy", xlab="homogenity ", main="Scatter Plot", labels=row.names(d)) 其中patches.csv包含数据
汽车中使用散点图
:
library(car)
d=read.csv("patches.csv", header=T)
scatterplot(energy ~ homogenity | label, data=d,
ylab="energy", xlab="homogenity ",
main="Scatter Plot",
labels=row.names(d))
其中patches.csv
包含数据帧(如下)
我想以不同的方式显示这两个标签集。由于数据量很大,绘图非常密集,因此我得到了右下方的结果(大部分红色数据可见)。图像需要一段时间来渲染,因此我可以在最终图表中隐藏之前快速地看到带黑色标签的数据(左下方)
我可以控制R先用红色绘制数据,还是有更好的方法来实现我的目标
以下是我的数据示例:
label,channel,x,y,contrast,energy,entropy,homogenity
1,21,460,76,0.991667,0.640399,0.421422,0.939831
1,22,460,76,0.0833333,0.62375,0.364379,0.969445
1,23,460,76,0.129167,0.422908,0.589938,0.935417
1,24,460,76,0,1,0,1
1,25,460,76,0,1,0,1
1,26,460,76,0.0875,0.789627,0.253649,0.967361
1,27,460,76,2.4,0.528516,0.700859,0.845558
1,28,460,76,0.120833,0.562066,0.392998,0.945139
1,29,460,76,0.0125,0.975234,0.0329461,0.99375
1,30,460,76,0,1,0,1
1,31,460,76,0.1625,0.384662,0.5859,0.929861
0,0,483,82,0.404167,0.309505,0.61573,0.947222
0,1,483,82,0.0166667,0.728559,0.221967,0.991667
0,2,483,82,0,1,0,1
0,3,483,82,0.416667,0.327083,0.644057,0.940972
0,4,483,82,0.0208333,0.919054,0.0940364,0.989583
0,5,483,82,0.416667,0.327083,0.644057,0.940972
0,6,483,82,0,1,0,1
0,7,483,82,0.0333333,0.794479,0.192471,0.983333
0,8,483,82,0,1,0,1
0,9,483,82,0,1,0,1
0,10,483,82,0.0208333,0.958984,0.0502502,0.989583
如果要更改着色顺序,请将参数col=2:1
传递到scatterplot
,然后在黑色之前绘制红色。您可以使用scales
软件包中的函数alpha
使点半透明(它采用颜色向量和alpha值,使每种颜色的密度不同)
##更多数据
d与bunk对alpha所说的相似
如果有很多点,则单个点的实际标识不再有意义。相反,您可能需要密度的表示。为此,请使用平滑散射(x,y)
并将高亮显示的点与常用的点(morex,morey)
重叠。显然,您知道如何使用点(与绘图相同的参数),因此实现起来非常容易,并且只需要很少的额外知识。您尝试过半透明颜色吗?这是一种常见的过度绘制方法:我认为car::scatterplot
的参数是col=adjustcolor(调色板()[1:2],.5)
。尝试使用ggplot
,查看geom_点(…,alpha=0.3)
,也可能是facet\u grid()
。我想以不同的顺序绘制数据,所以稀疏数据被绘制在稠密数据上。颜色本身在这个时候并不重要point@cdmh您只需更改col
变量,例如col=2:1
应首先绘制红色,然后在顶部绘制黑色。见上文。您只需要将稀疏数据对应的颜色设置为col
向量中的最后一个。
## More data
d <- data.frame(homogeneity=(x=rnorm(10000, 0.85, sd=0.15)),
label=factor((lab=1:2)),
energy=rnorm(10000, lab^1.8*x^2-lab, sd=x))
library(car)
library(scales) # for alpha
opacity <- c(0.3, 0.1) # opacity for each color
col <- 1:2 # black then red
scatterplot(energy ~ homogeneity | label, data=d,
ylab="energy", xlab="homogenity ",
main=paste0(palette()[col], "(", opacity, ")", collapse=","),
col=alpha(col, opacity),
labels=row.names(d))