大家好,我是Python进阶。前言前几天在白金交流群里,有个叫【小伙伴】的粉丝在Python交流群里问了一个关于Pyecharts可视化的问题。乍一看似乎很简单,但实际上确实很难。问题如下。这个问题一看就不知道他在说什么。看完代码,我明白他的意思了。1.思路下面是他的代码。首先他读取excel文件,然后他用两种方法生成数据,一种是datas,一种是datas2。对比这两个数据,发现是一样的,数据都是一样的,只是最后生成的html动画有点不同而已。importpandasaspdfrompyechartsimportoptionsasoptsfrompyecharts.chartsimportMapimportoperatorasopimporttimedf_tb=pd.read_excel('./data.xlsx')locations=[locationforlocationindf_tb['地区']]values=[值valueindf_tb['2016年']]datas=list(zip(locations,values))print(datas)fordataindatas:print(data)#print(type(data))print(type(datas))#print("==============================")#deffunc(m):#a=[]#foriinrange(0,35):#b=(df_tb['地区'][i],df_tb[m][i])#a.append(b)#returna#datas2=func('2016年')#对于datas2中的数据:#print(data)#print(type(data))#print(datas2)#print(type(datas2))map=(Map().add('gdp',[locationforlocationindatas],'china')#.add('gdp',[list(location)forlocationindatas],'china').set_global_opts(title_opts=opts.TitleOpts(title='各省贫困县分布图'),visualmap_opts=opts.VisualMapOpts(max_=150)))map.render('各省贫困县分布图.html')#print(op.eq(datas,func('2016')))下图是datas生成的html动画,就是coloredandhasDatadisplay,如下图,是datas2生成的html动画,无色,没有数据显示,如下图。这就很奇怪了,明明是一样的数据,为什么最后生成的图的效果会有这么大的差别呢?一不小心,真的很难找到!2.解决方案其实一开始看到这个的时候,我也觉得很奇怪,也没有什么想法。后来想了想,地图上的省份是可以显示的,但是数据有问题,那肯定是数据的问题。从这个想法出发,很快就找到了问题所在。依次遍历datas和datas2数据,查看数据类型,很快就看出问题所在,如下图:datas2列表中的numbers是numpy的.int64类型,而numpy.int64类型无法在html中显示,所以问题就暴露出来了。只要在函数处理的时候把numpy.int64的类型改成int类型,问题就解决了。只需将func()函数中的代码替换为以下代码:deffunc(m):a=[]foriinrange(0,35):b=(df_tb['region'][i],int(df_tb[m][i]))a.append(b)返回a后,再次运行程序,可以看到可以正常显示值了,如下图。3.总结我是Python进阶。本文针对粉丝在Pyecharts可视化过程中提出的问题,给出了满意的解决方案,满足了粉丝的要求。
