当许多点重叠时,散点图很难解释,因为这种重叠会掩盖特定区域中的数据密度.一种解决方案是对绘制点使用半透明颜色,以便不透明区域表示在这些坐标中存在许多观察.
下面是我在R中的黑白解决方案的示例:
MyGray <- rgb(t(col2rgb("black")), alpha=50, maxColorValue=255)
x1 <- rnorm(n=1E3, sd=2)
x2 <- x1*1.2 + rnorm(n=1E3, sd=2)
dev.new(width=3.5, height=5)
par(mfrow=c(2,1), mar=c(2.5,2.5,0.5,0.5), ps=10, cex=1.15)
plot(x1, x2, ylab="", xlab="", pch=20, col=MyGray)
plot(x1, x2, ylab="", xlab="", pch=20, col="black")
Run Code Online (Sandbox Code Playgroud)

然而,我最近在PNAS中发现了这篇文章,它采用了类似的方法,但使用热图着色而不是不透明度作为重叠点数的指标.这篇文章是Open Access,所以任何人都可以下载.pdf并查看图1,其中包含我想要创建的图形的相关示例.本文的方法部分表明分析是在Matlab中完成的.
为方便起见,这里是上述文章中图1的一小部分:

如何在R中创建一个散点图,使用颜色而不是不透明度作为点密度的指标?
对于初学者,R用户可以install.packages("fields")使用该功能在库中访问此Matlab配色方案tim.colors().
是否有一种简单的方法可以制作出类似于上述文章图1的数字,但是在R?谢谢!
在matplotlib中绘制二维直方图时,是否有一种简单的方法可以获得对数转换计数?与该pyplot.hist方法不同,该pyplot.hist2d方法似乎没有日志参数.
目前我正在做以下事情:
import numpy as np
import matplotlib as mpl
import matplotlib.pylab as plt
matrix, *opt = np.histogram2d(x, y)
img = plt.imshow(matrix, norm = mpl.colors.LogNorm(), cmap = mpl.cm.gray,
interpolation="None")
Run Code Online (Sandbox Code Playgroud)
其中绘制了预期的直方图,但轴标签显示了箱的索引,因此不是预期的值.
v1 v2 yy
15.25 44.34 100.00
83.05 59.78 100.00
96.61 65.09 100.00
100.00 75.47 100.00
100.00 50.00 100.00
100.00 68.87 100.00
100.00 79.35 100.00
100.00 100.00 100.00
100.00 63.21 100.00
100.00 100.00 100.00
100.00 68.87 100.00
0.00 56.52 92.86
10.17 52.83 92.86
23.73 46.23 92.86
Run Code Online (Sandbox Code Playgroud)
在上面的数据框中,我想绘制一个热图,使用v1和v2作为x和y轴,yy作为值.我怎么能在python中做到这一点?我试过seaborn:
df = df.pivot('v1', 'v2', 'yy')
ax = sns.heatmap(df)
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.还有其他方法吗?
我正在使用pyplot从python中的数千个点制作散点图.我的问题是他们倾向于集中在一个地方,而这只是一大堆积分.
是否有某种功能可以使pyplot绘图点达到某个临界密度,然后使其成为等高线图?
我的问题类似于这个问题,其中示例图具有轮廓线,其中颜色代表绘制点的密度.
谢谢
我有一个散点图,我根据数组为每个数据点着色:
plt.scatter(xs,ys,c=av,cmap=plt.cm.hot,s=50,alpha=0.5)
In [96]: xs.shape
Out[96]: (5594,)
In [97]: ys.shape
Out[97]: (5594,)
In [98]: av.shape
Out[98]: (5594,)
Run Code Online (Sandbox Code Playgroud)
现在,我想保留颜色但平滑数据点以获得平滑的散点图,如下所示(来自这篇文章)或此图像:
评论:我认为如果我可以添加更多的点,xs, ys, zs我可以用更多的数据点制作散点图,因此,它看起来更像是热图,这就是我想要的。现在,对于 中的每个点xs, ys, zs,我想在原始点周围添加具有相似值的附加点。理想情况下,这些附加点应围绕 中的实际原始点形成正态分布xs, ys, zs。有统计工具可以完成这项任务吗?例如如何更改[1, 5, 10] 为[0.9,0.98,1,1.02,1.1, 4.9,4.98,5,5.02,5.1, 9.9,9.98,10,10.02,10.1]?