sta*_*tti 4 python plot visualization matplotlib heatmap
我的问题几乎与这个问题完全相似.但是,我对答案不满意,因为我想生成一个实际的热图,而不是明确地对数据进行分级.
确切地说,我想显示散点数据和自定义内核(例如1/x ^ 2)之间卷积的结果.
我应该如何用matplotlib实现这个?
编辑:基本上,我所做的就是这个.结果就在这里.我想保留一切,轴,标题,标签等.基本上只是改变情节就像我描述的那样,同时尽可能少地重新实现.
mat*_*att 13
使用matplotlib.dats.date2num将时间序列数据转换为数字格式.放下一个跨越x和y范围的矩形网格,并在该图上进行卷积.制作卷积的伪彩色图,然后将x标签重新格式化为日期.
标签格式有点混乱,但有相当好的记录.您只需要使用DateFormatter和适当的格式化字符串替换AutoDateFormatter.
您需要在卷积中调整常量以获取数据.
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()
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
7608 次 |
| 最近记录: |