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

标签 python matplotlib plot visualization heatmap

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

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

我应该如何使用 matplotlib 实现它?

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

最佳答案

使用 matplotlib.dats.date2num 将您的时间序列数据转换为数字格式。放置一个跨越 x 和 y 范围的矩形网格,并在该图上进行卷积。绘制卷积的伪彩色图,然后将 x 标签重新格式化为日期。

标签格式有点乱,但还算不错documented .您只需将 AutoDateFormatter 替换为 DateFormatter 和适当的格式化字符串。

您需要为数据调整卷积中的常量。

import numpy as np
import datetime as dt
import pylab as plt
import matplotlib.dates as dates

t0 = dt.date.today()
t1 = t0+dt.timedelta(days=10)

times = np.linspace(dates.date2num(t0), dates.date2num(t1), 10)
dt = times[-1]-times[0]
price =  100 - (times-times.mean())**2
dp = price.max() - price.min()
volume = np.linspace(1, 100, 10)

tgrid = np.linspace(times.min(), times.max(), 100)
pgrid = np.linspace(70, 110, 100)
tgrid, pgrid = np.meshgrid(tgrid, pgrid)
heat = np.zeros_like(tgrid)

for t,p,v in zip(times, price, volume):
    delt = (t-tgrid)**2
    delp = (p-pgrid)**2
    heat += v/( delt + delp*1.e-2 + 5.e-1 )**2

fig = plt.figure()
ax = fig.add_subplot(111)
ax.pcolormesh(tgrid, pgrid, heat, cmap='gist_heat_r')

plt.scatter(times, price, volume, marker='x')

locator = dates.DayLocator()
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(dates.AutoDateFormatter(locator))
fig.autofmt_xdate()

plt.show()

Script output

关于python - 使用散点数据集在 MatPlotLib 中生成热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6387819/

相关文章:

python - 使用 xerr 和 yerr 使用 matplotlib 的散点图

python - 在 matplotlib 中更改字体

wolfram-mathematica - 提高(或替代)RegionPlot 的速度

Python ftplib 连接错误(gaierror)

python - 如何计算损失梯度 w.r.t 以模拟 Keras 模型中的输入?

python - Plone 机 : Check if a form was submitted

python - 如何在右侧绘制 yticks 并保留经典的左侧

python - 全局变量 : assignment vs method call

python - python中具有不同x轴和y轴刻度的一个图中的两个(或更多)图

R:在曼哈顿图中的 X Axis 刻度线之间添加空间?