这个问题的灵感来自于R中的pheatmap中的中断。问题是,如果我能定义如何“粗糙”,如何连续/离散我的着色和装订是在海运的热图。我找到了一种使用cmap和所用颜色的方法。海上热图图的离散图例)。然而,我不知道如何完成这些颜色组的任务。
因此,的问题是,,如果我使用cmap并强制海运只使用一个离散的colours=bins集,那么数据如何绑定呢?我如何手动设置它?例如:在R的情况下,我可以按100的步数将断点设置为0到800,并将其传递给“突破口”参数。
breaksList = seq(0,800,by = 100)
如果我的刻度是线性的,那么使用cmap和颜色数是相当简单的,但是如果我想要我的bins=colorbar对数,或者只是,而不是等距的,我该怎么做呢?
为了给出一个具体的例子,让我举一个飞行数据集的例子。在左边是原来的默认情节,在右边,我选择5种颜色有5个垃圾箱。那么如何定义这些垃圾箱的边缘呢?我能把它们重置吗?这样我就有了。垃圾箱0-200,200-300,300-400,400- 600,600以上?(我故意用不平等的垃圾桶来表达我的意思。)
# choose 5 colours to create 5 bins
cmap = sns.color_palette('rocket', n_colors=5)
# run this without the cmap argument to get the first image
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax = sns.heatmap(flights, cmap = cmap)


谢谢。
发布于 2020-03-03 14:52:23
似乎在海运中存在一个错误,使下面的想法无法正常工作,因此回到纯粹的matplotlib:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
import seaborn as sns
# choose 5 colours to create 5 bins
colors = sns.color_palette('rocket', 5)
levels = [0, 200, 300, 400, 600]
cmap, norm = matplotlib.colors.from_levels_and_colors(levels, colors, extend="max")
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
fig, ax = plt.subplots()
im = ax.imshow(flights.values, cmap = cmap, norm=norm)
ax.set(xticks=range(flights.shape[1]), yticks=range(flights.shape[0]),
xticklabels=flights.columns, yticklabels=flights.index)
ax.tick_params(axis="x", rotation=90)
fig.colorbar(im, ax=ax, spacing="propotional")
plt.show()

https://stackoverflow.com/questions/60506990
复制相似问题