Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中绘制分层散点图?_R_Scatter Plot - Fatal编程技术网

如何在R中绘制分层散点图?

如何在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包含数据

我正在学习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
包含数据帧(如下)

我想以不同的方式显示这两个
标签集。由于数据量很大,绘图非常密集,因此我得到了右下方的结果(大部分红色数据可见)。图像需要一段时间来渲染,因此我可以在最终图表中隐藏之前快速地看到带黑色标签的数据(左下方)

我可以控制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))