python 使用Bokeh画柱形图时不显示图像

虽然有很多种方法都可以画图,但是用bokeh画出来的图确实在颜色协调上会更好看。这几天在做爬虫,需要爬取亚马逊的畅销书籍的信息,在最后打算将这些信息进行画柱形图分析的时候,却出现了问题。

我是先将爬取到的数据转成Dataframe格式,类似下面这样
在这里插入图片描述
由于在提取dataframe格式数据的某一列的时候,得到的结果类型是serice类型,因此要先将这种类型转换成列表list形式:

x1 = data['Author'].tolist()
top1 = data['Price'].tolist()

其中画图最重要的两行代码如下:

p = figure(x_range=x1, plot_width=800, plot_height=550, title="Authors Highest Priced Book", toolbar_location=None, tools="")
p.vbar(x=x1, top=top1, width=0.2)

但是我在这里卡了很久很久!
它就是!
不显示图像!

最重要的三个参数分别是x_range, x, top

经过我重重筛查,

  1. 调用的包是正确的,只是看你是不是在notebook环境下运行而已,问题不大;
  2. 那三个参数类型也都是list,没错;
  3. 我又找了别人是怎么画这个柱形图的,将这些数据包装成ColumnDataSource形式,但是这其实一般代码都会默认给你转换成这种形式,因此这个也没有解决问题;
  4. 然后我又在想会不会是因为我需要x轴的标识是字符,所以就有点儿问题,于是我用简易的[‘a’, ‘b’, ‘c’]来进行测试,它居然画出来了!!(然后我进入了更沉默的深思)
  5. 由于我原来的数据只有15组,所以只能用最笨的办法来查了,我直接用数据来初始化那些参数,发现确实还是不能画出来,但这时我留意到了,那些作者的名字千奇百怪(毕竟是外文,多多少少有点儿特别),我就揣测是不是字符编码的问题,于是将那些特别的字符都去掉了,但!它还是没有画出来;
    6)最终我选择,一个一个添加数据来进行测试,前面几个添加完了,是可以正常画出图的,但是当再添加某一个作者名字的时候,突然就画不出来了,我终于发现了问题!因为畅销书排行榜中,可能一个作者不止一本书上榜,因此横坐标就得出现两次这个作者的名字,但是这个时候,图像就不能正常显示了!

总结:特殊字符不影响显示图像,重要的是,横坐标的字符不能够有重复!
也就是[‘a’, ‘b’, ‘c’]是可以的,但是[‘a’, ‘a’, ‘c’]就会直接不显示任何东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值