在Python中制作1D柱状图热图

2024-05-16 01:39:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python制作一个由点组成的棒的热分布的热图。从本质上讲,它是由两个保持恒定温度的储层之间的一个初始温度的棒组成的。例如,一根由20个点组成的棒,每个点的初始温度为100摄氏度,在棒的两侧各有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]]。其中每个列表表示在某个时间步的棒中的热分布。在

有没有办法得到一个热度图,在那里我可以得到酒吧在不同时间的热量,相互叠加?在

谢谢


Tags: 列表时间温度储层酒吧热图热量办法
1条回答
网友
1楼 · 发布于 2024-05-16 01:39:02

这里有一个使用插值来平滑离散值的解决方案。如果这不适合您的目的,另一个想法是尝试seaborn库中的heatmap函数。顺便说一句,这将把你的条的末端看作单位长度等于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

相关问题 更多 >