当前位置: 代码迷 >> 综合 >> 解决 pyecharts 0.5.x 中HeatMap画图纵坐标不能正常显示的问题
  详细解决方案

解决 pyecharts 0.5.x 中HeatMap画图纵坐标不能正常显示的问题

热度:28   发布时间:2023-11-27 04:06:22.0

1. 问题发现

pyecharts画HeatMap中纵坐标y_axis不能正常显示,显示的是索引值,即0,1,2……,而不是对应的label值。

例如在jupyter notebook 中运行如下代码:

from pyecharts import HeatMap
x_axis = ["12a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a", "11a","12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p"]
y_aixs = ["Saturday", "Friday", "Thursday","Wednesday", "Tuesday", "Monday","Sunday"]data = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]heatmap = HeatMap()
heatmap.add("热力图直角坐标系", x_axis, y_aixs, data, is_visualmap=True,visual_text_color="#000", visual_orient='horizontal')
heatmap

输出的热力图中,纵坐标显示的是y_aixs的索引0,1,2……,而不是对应的value值"Saturday",“Friday”, “Thursday”,……
在这里插入图片描述

2. 问题探索

在 https://github.com/pyecharts/pyecharts/pull/843 中有该问题的相关讨论。该问题确实为旧版本中的一个bug。
根据 pyecharts 的版本日志(https://pyecharts.org/#/zh-cn/changelog )显示,这个bug在 version 0.5.5 已经被修复:
在这里插入图片描述
但其实并没有,在 version 0.5.11 中依然存在(https://github.com/pyecharts/pyecharts/issues/572 中有讨论)。
在全新版本v1.0.0 开始这个bug才被修复。而且要注意v0.5.x 和 v1 之间并不兼容。0.5.x 版本现在已经不再进行维护,所以比较推荐大家使用v1 之后的版本。

怎么查看你所使用的pyecharts的版本信息呢?
在cmd或Anaconda Prompt中运行:pip list 或者 pip freeze
在这里插入图片描述
如上,我使用的是v0.5.11

附上pyecharts的
主页:https://pyecharts.org/#/
官方文档:https://github.com/pyecharts/pyecharts/ (v1.x 版本)
https://05x-docs.pyecharts.org/#/ (v0.5.X 版本)

以及安装方法:

# 安装 v1 以上版本
$ pip install pyecharts -U# 如果需要安装 0.5.11 版本,可以使用
# pip install pyecharts==0.5.11

3. 本地修复方法

如果确实需要使用 v0.5.x,可以参考来自大神的本地修复方法(https://github.com/pyecharts/pyecharts/pull/843 ),可以解决这个bug,同时不影响其它函数的正常使用

方法如下:

  • 打开pyecharts\echarts\axis.py,将32-34行代码:
       if not isinstance(formatter,types.FunctionType):formatter = "{value} " + formattersuper(YAxisLabel, self).__init__(formatter=formatter, **kwargs)
  • 修改为:
        super(YAxisLabel, self).__init__(**kwargs)

如下,我的 axis.pyC:\Users\admin\Anaconda3\Lib\site-packages\pyecharts\echarts文件夹下,注释掉32-34行(比直接删掉更保险,万一出什么问题容易回溯),然后添加一行:
在这里插入图片描述

之后重启jupyter notebook即可。
修复之后的热力图如下:
在这里插入图片描述

`

  相关解决方案