<p>以下示例使用seaborn的tips数据集。直方图是通过将<code>total_bill</code>分组到存储箱中创建的。然后,根据每组中的提示对条进行着色</p>
<pre class="lang-py prettyprint-override"><code>import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import matplotlib.patches as mpatches
import seaborn as sns
sns.set_theme(style='white')
tips = sns.load_dataset('tips')
tips['bin'] = pd.cut(tips['total_bill'], 10) # histogram bin
grouped = tips.groupby('bin')
min_tip = tips['tip'].min()
max_tip = tips['tip'].max()
cmap = 'RdYlGn_r'
fig, ax = plt.subplots(figsize=(12, 4))
for bin, binned_df in grouped:
bin_height = len(binned_df)
binned_tips = np.sort(binned_df['tip']).reshape(-1, 1)
ax.imshow(binned_tips, cmap=cmap, vmin=min_tip, vmax=max_tip, extent=[bin.left, bin.right, 0, bin_height],
origin='lower', aspect='auto')
ax.add_patch(mpatches.Rectangle((bin.left, 0), bin.length, bin_height, fc='none', ec='k', lw=1))
ax.autoscale()
ax.set_ylim(0, 1.05 * ax.get_ylim()[1])
ax.set_xlabel('total bill')
ax.set_ylabel('frequency')
plt.colorbar(ax.images[0], ax=ax, label='tip')
plt.tight_layout()
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/e0aEj.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/e0aEj.png" alt="resulting plot"/></a></p>
<p>下面是带状彩色贴图(<code>cmap = plt.get_cmap('Spectral', 9)</code>)的外观:</p>
<p><a href="https://i.stack.imgur.com/39s9T.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/39s9T.png" alt="banded colormap"/></a></p>
<p>下面是另一个使用<code>'mpg'</code>数据集的示例,该数据集具有汽车重量的直方图和每加仑英里数的颜色</p>
<p><a href="https://i.stack.imgur.com/BX24p.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BX24p.png" alt="mpg example"/></a></p>