为啥用 Plotly 显示热图时会出现这个问题?
Posted
技术标签:
【中文标题】为啥用 Plotly 显示热图时会出现这个问题?【英文标题】:Why this problem when showing the heatmap with Plotly?为什么用 Plotly 显示热图时会出现这个问题? 【发布时间】:2020-10-20 13:43:39 【问题描述】:我想用 plotly 创建一个简单的带注释的热图。 但是当 y 值包含年份('2017','2018','2019')时,我会感到奇怪
例如:
import plotly.figure_factory as ff
# create a x list (month)
x = ['January',
'February',
'March']
#create a y list (year)
y=['2017', '2018', '2019', 'Mean']
#create a z list (the values)
z = [[1,2,3],
[4,5,6],
[7,8,9],
[4,5,6]]
fig = ff.create_annotated_heatmap(z,x=x,y=y)
fig.show()
上面的这段代码给了我这个结果:
但是,如果我用其他字符串更改 y 列表。我没事,我得到了我想要的。
import plotly.figure_factory as ff
# create a x list (month)
x = ['January',
'February',
'March']
#create a y list (year)
y=['year 1', 'year 2', 'year 3', 'Mean']
#create a z list (the values)
z = [[1,2,3],
[4,5,6],
[7,8,9],
[4,5,6]]
fig = ff.create_annotated_heatmap(z,x=x,y=y)
fig.show()
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:尝试添加fig.update_layout(yaxis=dict(type='category'))
。这应该确保 y 轴上的值被解释为字符串。
import plotly.figure_factory as ff
# create a x list (month)
x = ['January',
'February',
'March']
#create a y list (year)
y=['2017', '2018', '2019', 'Mean']
#create a z list (the values)
z = [[1,2,3],
[4,5,6],
[7,8,9],
[4,5,6]]
fig = ff.create_annotated_heatmap(z,x=x,y=y)
fig.update_layout(yaxis=dict(type='category'))
fig.show()
【讨论】:
我得到与 OP 示例代码相同的损坏结果。有趣的是,fig.update_layout(yaxis=dict(type='category'))
和 fig.update_yaxes(type='category')
在我的情况下都没有解决这个问题。相反,不再绘制所有彩色框。你用的是什么 Plotly 版本? (在 Python 3.7.6 上使用 Plotly 4.12.0 和 Plotly 5.1.0 测试)
我不记得我当时使用的是哪个版本的 Plotly,但我刚刚重新运行了代码(我有 Plotly 5.3.1),确实它不再工作了。跨度>
以上是关于为啥用 Plotly 显示热图时会出现这个问题?的主要内容,如果未能解决你的问题,请参考以下文章