1

我尝试通过 pvplot 制作网格热图。我参考这个链接。 https://hvplot.pyviz.org/user_guide/Subplots.html

import hvplot.pandas
from bokeh.sampledata.unemployment1948 import data

data.Year = data.Year.astype(str)
data = data.set_index('Year')
data.drop('Annual', axis=1, inplace=True)
data.columns.name = 'Month'

df = pd.DataFrame(data.stack(), columns=['rate']).reset_index()
df = df.tail(40)
df['group'] = [1,2]*20
df.hvplot.heatmap(x='Year', y='Month', C='rate', col='group', colorbar=True)

热图

热图

我希望左侧颜色条不显示。共享轴可以像链接页面一样对齐。谁能告诉 pvplot 是否可以支持这一点?谢谢。

4

1 回答 1

1

您创建的 holoviews 对象是所谓的gridspace。它包含数据中每个组的单独图。
您可以通过组名访问每个组的图。在您的示例中,组的名称是 1 和 2。我们的想法是仅在第 1 组的图上使用colorbar=False

您可以像这样从第一组中删除颜色条:

# create a variable that holds your gridspace plots
grid_space_groups = df.hvplot.heatmap(x='Year', y='Month', C='rate', col='group')

# checking the names of your groups in your gridspace
print(grid_space_groups.keys())

# removing the colorbar from the plot with the group that has name '1'
grid_space_groups[1] = grid_space_groups[1].opts(colorbar=False)

# plot your grid space 
grid_space_groups


请注意:
当您的颜色条的值范围不同时,您首先必须确保它们具有相同的范围。您可以对 column 这样做rate
grid_space_groups.redim.range(rate=(0, 10))

或者,您可以为每个组分别创建每个图。
第 1 组的图,您使用colorbar=False创建没有颜色条,而您使用颜色条创建第 2 组的图:

plot_1 = df[df.group == 1].hvplot.heatmap(x='Year', y='Month', C='rate', colorbar=False)
plot_2 = df[df.group == 2].hvplot.heatmap(x='Year', y='Month', C='rate')
plot_1 + plot_2

从网格空间全息视图中删除左侧颜色条

于 2019-09-13T14:00:29.613 回答