在python中为1D条形成热图

时间:2017-03-30 16:25:27

标签: python

我想在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 ]]。其中每个列表代表某个时间步长条中的热量分布。

有没有办法得到这个的热图,我会在不同的时间把酒吧的热量堆叠在一起?

由于

1 个答案:

答案 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(  )

bar1

bar2

bar3

bar4