相关疑难解决方法(0)

matplotlib散点图中的对数色条

我想使散点图上的点的颜色对应于空隙分数的值,但是在对数标度上以放大差异.我这样做了,但是现在当我执行plt.colorbar()时,它会显示空白分数的对数,当我真的想要实际的空隙分数时.如何使用属于[0.00001,1]的空白分数的适当标签在色条上进行对数刻度?

这是我现在拥有的图的图像,但是空隙分数颜色条没有被适当地标记为对应于真实的空隙分数,而不是它的对数.

目前的情节

fig = plt.figure()
plt.scatter(x,y,edgecolors='none',s=marker_size,c=np.log(void_fraction))
plt.colorbar()
plt.title('Colorbar: void fraction')
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

python matplotlib

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

计算不规则间隔点密度的有效方法

我正在尝试生成有助于识别热点的地图叠加图像,即地图上具有高密度数据点的区域.我尝试过的方法都没有足够快我的需求.注意:我忘了提到算法在低和高变焦场景(或低和高数据点密度)下都能正常工作.

我查看了numpy,pyplot和scipy库,我能找到的最接近的是numpy.histogram2d.如下图所示,histogram2d输出相当粗糙.(每个图像都包含覆盖热图的点以便更好地理解)

在此输入图像描述 我的第二次尝试是迭代所有数据点,然后计算作为距离函数的热点值.这样可以产生更好看的图像,但是在我的应用程序中使用它太慢了.因为它是O(n),所以100分可以正常工作,但是当我使用30000点的实际数据集时会爆炸.

我最后的尝试是将数据存储在KDTree中,并使用最近的5个点来计算热点值.这个算法是O(1),大数据集的速度要快得多.它仍然不够快,生成256x256位图需要大约20秒,我希望这可以在大约1秒钟内发生.

编辑

6502提供的boxsum平滑解决方案在所有缩放级别都能很好地工作,并且比我原来的方法快得多.

Luke和Neil G提出的高斯滤波器解决方案是最快的.

您可以在下面看到所有四种方法,总共使用1000个数据点,在3倍变焦处可见约60个点.

在此输入图像描述

生成原始3次尝试的完整代码,由6502提供的boxsum平滑解决方案和Luke建议的高斯滤波器(改进以更好地处理边缘并允许放大)在这里:

import matplotlib
import numpy as np
from matplotlib.mlab import griddata
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import math
from scipy.spatial import KDTree
import time
import scipy.ndimage as ndi


def grid_density_kdtree(xl, yl, xi, yi, dfactor):
    zz = np.empty([len(xi),len(yi)], dtype=np.uint8)
    zipped = zip(xl, yl)
    kdtree = KDTree(zipped)
    for xci in range(0, len(xi)):
        xc = xi[xci]
        for yci in range(0, len(yi)):
            yc = yi[yci]
            density = 0.
            retvalset = kdtree.query((xc,yc), k=5) …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib scipy

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

带有大量数据的散点图

我想用Matplotlib生成一个包含大量数据(大约300万个点)的散点图.实际上我有3个具有相同尺寸的矢量,我用以下面的方式绘制.

import matplotlib.pyplot as plt
import numpy as np
from numpy import *
from matplotlib import rc
import pylab
from pylab import * 
fig = plt.figure()
fig.subplots_adjust(bottom=0.2)
ax = fig.add_subplot(111)
plt.scatter(delta,vf,c=dS,alpha=0.7,cmap=cm.Paired)
Run Code Online (Sandbox Code Playgroud)

实际上没什么特别的.但实际生成它需要很长时间(我正在使用Python 2.7和Matplotlib 1.0处理我的MacBook Pro 4 GB RAM).有没有办法提高速度?

python numpy matplotlib

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

matplotlib中的热图与矢量格式

我正在尝试使用matplotlib绘制3D热图以及我的模拟结果.我已经阅读了这个主题并尝试使用imshow.不幸的是,当我以SVG或EPS格式保存图形时,它会将热像转换为图片(这对于期刊来说是不可接受的).所以,我也试过了hexbin - 但是图像太奇怪了.我不确定它会被期刊接受.我们还有其他东西,或者我必须用矩形填充热垫?

例如,如果运行此代码:

import numpy as np
import numpy.random
import matplotlib.pyplot as plt

# Generate some test data
x = np.random.randn(8873)
y = np.random.randn(8873)

heatmap, xedges, yedges = np.histogram2d(x, y, bins=50)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]

print extent
print heatmap
plt.clf()
surf = plt.imshow(heatmap, extent=extent)
plt.colorbar(surf, shrink=0.75, aspect=5)
plt.show()
Run Code Online (Sandbox Code Playgroud)

并保存SVG文件,它将包含PNG图像:

   <g clip-path="url(#p6def4f5150)">
    <image height="347" width="315" x="115.127800906" xlink:href="data:image/png;base64,
Run Code Online (Sandbox Code Playgroud)

我在OpenSUSE和Ubuntu OS下使用matplotlib,版本1.1.1.

python svg matplotlib eps

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

如何在matplotlib中为热图使用预制的颜色贴图?

我想使用http://goo.gl/5P4CT的彩色地图作为我的matplotlib热图.

我试过这样做:

myHeatMap.imshow(heatMap, extent=ext, cmap=get_cmap(cm.datad["Spectral"]))
Run Code Online (Sandbox Code Playgroud)

然而,Python解释器抱怨

in get_cmap
if name in cmap_d:
    TypeError: unhashable type: 'dict'
Run Code Online (Sandbox Code Playgroud)

使用这些彩色地图的正确方法是什么?

python matplotlib

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

如何为高维数据集绘制热图?

如果您能让我知道如何为具有大约 150 个特征的大型数据集绘制高分辨率热图,我将不胜感激。

我的代码如下:

XX = pd.read_csv('Financial Distress.csv')

y = np.array(XX['Financial Distress'].values.tolist())
y = np.array([0 if i > -0.50 else 1 for i in y])
XX = XX.iloc[:, 3:87]
df=XX
df["target_var"]=y.tolist()
target_var=["target_var"]

fig, ax = plt.subplots(figsize=(8, 6))
correlation = df.select_dtypes(include=['float64',
                                             'int64']).iloc[:, 1:].corr()
sns.heatmap(correlation, ax=ax, vmax=1, square=True)
plt.xticks(rotation=90)
plt.yticks(rotation=360)
plt.title('Correlation matrix')
plt.tight_layout()
plt.show()
k = df.shape[1]  # number of variables for heatmap
fig, ax = plt.subplots(figsize=(9, 9))
corrmat = df.corr()
# Generate a mask for the upper triangle
mask = np.zeros_like(corrmat, …
Run Code Online (Sandbox Code Playgroud)

data-visualization heatmap python-3.x seaborn

6
推荐指数
1
解决办法
7716
查看次数

使用matplotlib的向日葵散点图

我有兴趣构建向日葵散点图(例如,如http://www.jstatsoft.org/v08/i03/paper [PDF链接]所示).在我编写自己的实现之前,有没有人知道现有的实现?我知道Stata和R中的函数,但我在matplotlib中寻找一个.

谢谢.

python matplotlib

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

如何使用一些概率值在整个幻灯片图像(.svs 格式)上生成热图?

我正在尝试使用概率值为整个幻灯片图像(WSI)生成热图或概率图。我有坐标点(确定 WSI 上的区域)和相应的概率值。

WSI 基本介绍: WSI 尺寸很大(几乎 100000 x 100000 像素)。因此,无法使用普通图像查看器打开这些图像。WSI 使用OpenSlide 软件进行处理。

我之前在 Stack Overflow 上看到过与热图相关的帖子,但由于 WSI 的处理方式不同,我无法弄清楚如何应用这些解决方案。我遵循的一些例子:1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11等。

matlab heatmap python-3.x openslide

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

使用散点图数据在MatPlotLib中生成热图

我的问题几乎与这个问题完全相似.但是,我对答案不满意,因为我想生成一个实际的热图,而不是明确地对数据进行分级.

确切地说,我想显示散点数据和自定义内核(例如1/x ^ 2)之间卷积的结果.

我应该如何用matplotlib实现这个?

编辑:基本上,我所做的就是这个.结果就在这里.我想保留一切,轴,标题,标签等.基本上只是改变情节就像我描述的那样,同时尽可能少地重新实现.

python plot visualization matplotlib heatmap

4
推荐指数
1
解决办法
7608
查看次数

在Python MatPlotLib中生成频率热图,从.csv文件读取X和Y坐标

我最近偶然发现了一个类似的问题,关于如何使用MatPlotLib模块在Python中生成频率热图.

这篇文章非常有用,我可以让各个脚本运行并为代码本身生成的随机测试数据创建热图.但是,我无法调整代码来为我正在使用的数据创建热图.数据采用逗号描述格式(.csv).

我目前在此.csv文件中保存了3788对平均质量评级.这些平均质量等级的范围都是0到5.我正在尝试创建一个热图,在x和y轴上以0.5的增量对数据进行分箱(0- .499,.5-.999,1-1.499等等).

我想将.csv文件的第一列(webqualityratings)导入热图的x值和.csv文件的第二列(inpersonqualityratings)作为热图的y值.

我试图通过"ptomato"发布并由Mike Graham编辑的代码如下:

import numpy as np   
import numpy.random   
import matplotlib.pyplot as plt  

# Generate some test data  
x = np.random.randn(8873)  
y = np.random.randn(8873)  

heatmap, xedges, yedges = np.histogram2d(x, y, bins=50)  
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]  
plt.clf()  
plt.imshow(heatmap, extent=extent)  
plt.show() 
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我调整这段代码来读取我指定的.csv文件中的数据,我将永远感激不尽!

python csv matplotlib

3
推荐指数
1
解决办法
4050
查看次数