Python Bokeh调用varea_stack绘制垂直堆叠面积图无显示问题排查
冠状病毒clade时间序列堆叠面积图渲染异常解决方法
- 首先确认日期列
doc的数据格式:Bokeh的datetime类型坐标轴要求x轴对应的数据为pandas datetime格式,如果你的doc列为字符串/object类型,需要先做格式转换:import pandas as pd cot_pvt['doc'] = pd.to_datetime(cot_pvt['doc']) - 清理数据空值:
varea_stack对NaN值兼容性极差,只要任意一个堆叠列存在空值,就可能出现渲染失败的情况,提前将所有空值填充为0:cot_pvt = cot_pvt.fillna(0) - 确认堆叠列数据类型:所有clade对应的列必须为数值型(int/float),如果为object类型也会导致渲染失败,可手动转换格式:
stackers = cot_pvt.columns.tolist() stackers.remove('doc') cot_pvt[stackers] = cot_pvt[stackers].astype(float) - 如果你要实现归一化堆叠效果,需要先对每行数据做归一化处理,避免数值维度问题导致显示异常:
# 按行计算每日总检出量 row_sums = cot_pvt[stackers].sum(axis=1) # 每个clade的数值除以当日总检出量得到占比 cot_pvt[stackers] = cot_pvt[stackers].div(row_sums, axis=0) # 归一化后可手动指定y轴范围,避免自动计算轴范围出错 from bokeh.models import Range1d p.y_range = Range1d(0, 1) - 检查配色配置:确认
inferno配色已正确导入,非法颜色值也可能导致渲染异常:from matplotlib.cm import inferno
内容的提问来源于stack exchange,提问作者Jonathan Barnell
相关产品推荐
相关产品推荐

