我想在python中制作一个热图,用于由点组成的条形图的热量分布。基本上它由两个储存在恒定温度下的初始温度下的棒组成。例如,一个由20个点组成的条,每个条最初在100C,并且在条的两侧各有1个点,两者都永久保持在0。
我列出了一系列清单,显示温度在酒吧内的扩散随着时间的变化而变化:
[[0,100.0,100.0,100.0,0],[0,75.0,100.0,75.0,0],[0,62.5,87.5,62.5,0],[0,53.125,75.0,53.125,0 ]]。其中每个列表代表某个时间步长条中的热量分布。
有没有办法得到这个的热图,我会在不同的时间把酒吧的热量堆叠在一起?
由于
答案 0 :(得分:0)
这是一种使用插值来平滑离散值的解决方案。如果这不适合您的目的,另一个想法是在seaborn库中尝试热图功能。顺便说一句,这会将条形的末端视为单位长度等于1。
from mpl_toolkits.axes_grid1 import make_axes_locatable
import matplotlib.pyplot as plt
from matplotlib import cm
import seaborn as sns #optional
import numpy as np
import pandas as pd
bars = [ [0, 100.0, 100.0, 100.0, 0], [0, 75.0, 100.0, 75.0, 0], [0, 62.5, 87.5, 62.5, 0], [0, 53.125, 75.0, 53.125, 0] ]
for bar in bars:
df = pd.DataFrame( (np.array( bar )) )
ax = plt.subplot( )
im = ax.imshow( df.transpose( ), cmap=cm.jet, interpolation='nearest', vmin=0, vmax=100 )
divider = make_axes_locatable( ax )
cax = divider.append_axes( "right", size="5%", pad=0.05 )
cb = plt.colorbar(im, cax=cax)
cb.set_label('Temp deg C')
ax.xaxis.set_major_formatter(plt.NullFormatter())
ax.yaxis.set_major_formatter(plt.NullFormatter())
plt.show( )