相关疑难解决方法(0)

R Scatter Plot:符号颜色表示重叠点的数量

当许多点重叠时,散点图很难解释,因为这种重叠会掩盖特定区域中的数据密度.一种解决方案是对绘制点使用半透明颜色,以便不透明区域表示在这些坐标中存在许多观察.

下面是我在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的一小部分:

Flombaum等人的图1. 2013年,PNAS

如何在R中创建一个散点图,使用颜色而不是不透明度作为点密度的指标?

对于初学者,R用户可以install.packages("fields")使用该功能在库中访问此Matlab配色方案tim.colors().

是否有一种简单的方法可以制作出类似于上述文章图1的数字,但是在R?谢谢!

matlab plot r opacity heatmap

16
推荐指数
2
解决办法
2万
查看次数

matplotlib:hist2d中的log变换计数

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

其中绘制了预期的直方图,但轴标签显示了箱的索引,因此不是预期的值.

python matplotlib

8
推荐指数
1
解决办法
6559
查看次数

使用seaborn在python中绘制3列热图

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)

但是,这不起作用.还有其他方法吗?

python matplotlib heatmap pandas seaborn

8
推荐指数
2
解决办法
4195
查看次数

Pyplot Scatter to Contour plot

我正在使用pyplot从python中的数千个点制作散点图.我的问题是他们倾向于集中在一个地方,而这只是一大堆积分.

是否有某种功能可以使pyplot绘图点达到某个临界密度,然后使其成为等高线图?

我的问题类似于这个问题,其中示例图具有轮廓线,其中颜色代表绘制点的密度.

超酷轮廓图

谢谢

编辑:这就是我的数据很多黄点

python plot numpy matplotlib

7
推荐指数
1
解决办法
5249
查看次数

如何在Python中平滑散点图中的数据点?

我有一个散点图,我根据数组为每个数据点着色:

 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]

python matplotlib

5
推荐指数
1
解决办法
2735
查看次数

使用 Seaborn 绘制密度图

我有一个具有两个特征的数据集,我曾经Seaborn.relplot根据另一个特征来绘制它们,我得到了这个结果:

简单散点图

但我想使用 Seaborn 添加点密度,正如我们可以在本次讨论本次讨论中观察到的那样,请参见下图。

简单密度 在此输入图像描述

我该如何使用 Seaborn 来做到这一点?

python matplotlib seaborn

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

matplotlib ×5

python ×5

heatmap ×2

plot ×2

seaborn ×2

matlab ×1

numpy ×1

opacity ×1

pandas ×1

r ×1