Pyecharts的实例使用
前言
鄙人仅为一名普普通通大二学生,才学浅出,来此各地高人聚集处书写浅见,还望各位前辈高人多多指点海涵。我们诚邀各地有志之士加入我们的代码学习群交流:871352155(无论你会C/C++还是Java,Python还是PHP......有兴趣我们都欢迎你的加入,不过还请各位认真填写加群信息。群内目前多为大学生,打广告的先生女士就请不要步足了。我们希望有远见卓识的前辈能为即将步入社会的初犊提出建议指引方向。)
写前端的朋友都知道有一个开源的数据可视化JavaScript的库叫Echarts,那么在我们在python中也有一个他的同胞兄弟叫做pyecharts。使用起来特别的方便,当然在科学计算方面更多人选择的还是Matplotlib库。上学期我们去了一趟大连实习初次接触了下pyecharts,现在来写下我对这个库使用和拙见。
关于安装和官网
众所周知哈,这个python的库一般用pip install XXX(库的名字)或者直接在pycharm的setting里面下载。关于这个官网的开发者文档在这里开启传送门http://pyecharts.org/#/里面有关于pyecharts的配置项、图表类型、基本使用等等,总之介绍得十分全面,那你说官网介绍这么全面还写什么博客?QwQ那是因为毕竟开发者文档是建立在初学者的角度一切从简,我们这里说一下实战的基本使用。
First of all
你得引用这个库吧,这里引用pyecharts的东西特别多哈,什么“地图”,“柱状图”,“雷达图”,"全局变量
我都弄上来了,特别是要注意下我这里用了一个sqlite3库,这个是一个python自带的微型数据库,使用起来特别简洁明了,各位根据自己的数据库是什么更换。最后一个引用pyecharts主要是拿来做主题的,就像你手机换一个主题皮肤一样,官方自给的主题还是很好看的(开发者文档都有)。
import sqlite3
from pyecharts.charts import Pie,Bar,Grid,Line,Map,WordCloud,Radar,Gauge,Page
from pyecharts import options as opts
from pyecharts.globals import ThemeType,SymbolTyp
THEN
在大部分的实例情况下,我们的项目啊什么的都会和数据库有着情迷的接触,于是乎在画图之前尤其为重要的数据库操作就显得尤为重要。我的这个项目是关于爬取中国最好大学网上的数据后而制的图。所以数据都已经用scrapy框架爬取到了我的sqlite3数据库中了,在这里就不加演示了。如果对爬虫感兴趣的朋友可以看一下我的另外一个博客https://mp.csdn.net/postedit/104014416只是这个博客用的不是scrapy框架而是selenium库。
conn = sqlite3.connect('university.db')#sqlite3的连接数据库语法,特简单吧
cursor = conn.execute("SELECT uid,rank,uname from university")
#在上面这里啊,我取了不少的数据,为了简单说明啊,我就写三个
def location():#在后面这里我为了画一个全国各省有几所高校而建立的一个字典
dict1={}
for key in loc:
dict1[key] = dict1.get(key, 0) + 1
return dict1
NEXT
这里我就介绍下部分作图方法,其他的作图方法基本可以触类旁通(除了那个3D图我实习那两三天嫩是自学不明白)
def loaction_pie():#在这里我们是画一张饼图
university_location=location()#先从上面的函数里取出各地高校数量的字典
university_location_k=list(university_location.keys())#这里的键我设置的是各地名字
university_location_v = list(university_location.values())#这里字典的值是数量
#这里这个c是一个数据包的形式,自己随便取名字
c = (
Pie()#Pie是调用pyecharts中的饼图,前面也提到了,画什么图调库中什么包
.add("", [list(z) for z in zip(university_location_k, university_location_v)])#因为这个饼状图,他只接受数组,我们把字典拆成键值后再组合为列表就行,或者你一开始就弄成列表。(那为什么我要用字典呢,因为我其他地方要先用字典的地方多啊)
.set_global_opts(title_opts=opts.TitleOpts(title="各地高校所占比"))#一眼便知这是给你的图取一个名字的
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
c.render("各地高校所占比.html")#最后render为一个HTML文件,当然你弄成PNG,JPG没人阻止你哈哈。因为这个图我后面要全部嵌套进我写的HTML网页中
loaction_pie()
我们再来介绍下组合图。
def texs():
Scientific_scale = []
Top_results = []
Top_talent = []
school = []#这上面都是我建立的各种从数据库取出来数据
k = 1
for i in cursor:#这个cursor是数据库中的表
if (k < 10):
school.append(i[2])
Scientific_scale.append(i[8])
Top_results.append(i[10])
Top_talent.append(i[11])#分别取出四种数据并且形成列表
k += 1
else:
pass
#print(school)
grid = Grid()
line = Line()
bar = Bar()#老样子,调用库中的作图包
grid.theme = ThemeType.CHALK#这里是设置你画的图的主题ThemeType后面的这个可以替换的,替换什么样子,自己去官网找找。
bar.add_xaxis(school)#横坐标要什么数据,必须是数组格式
bar.add_yaxis("顶尖成果", Top_results)
bar.add_yaxis("顶尖人才", Top_talent)#双纵坐标,就是左边一个,右边一个,要什么数据
bar.set_global_opts(title_opts=opts.TitleOpts("10强高校")#标题
, tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross") # 交叉指向工具
)
bar.extend_axis(yaxis=opts.AxisOpts(type_="value",
name="论文数量",
min_=20000,
max_=60000,
position="right",
axislabel_opts=opts.LabelOpts(formatter="{value} 篇"),
))
# 在bar上增加Y轴,在line图上选择对应的轴向
line.add_xaxis(school)
line.add_yaxis("10强高校科研规模", Scientific_scale, yaxis_index=1)
# 把line添加到bar上
bar.overlap(line)
# 这里如果不需要grid也可以,直接设置bar的格式,然后显示bar即可
# bar.render_notebook()
grid.add(chart=bar, grid_opts=opts.GridOpts(), is_control_axis_index=True)
grid.render('10强高校.html')
texs()
云图
def cloud():
Achievements_transformation = []
for i in cursor:
Achievements_transformation.append((i[2],i[-2]))#取出数据放入数组
c = (
WordCloud()#调用
.add("", Achievements_transformation, word_size_range=[1, 100])#这里要做一个限制,太大和太小都不好,自己慢慢调试
.set_global_opts(title_opts=opts.TitleOpts(title="高校成果转化云图/(千元)"))
)
c.render("高校成果转化云图.html")
cloud()
Bootstrap统合
当然啊我也画了许许多多的其他图,这里就不一一介绍了,我说了都是触类旁通的,你看一下开发者文档基本就懂了该怎么弄了。我在项目的最后了为了显示一下和其他实习小组的与众不同,用了同样是初次接触的HTML中的BOOTSTRAP框架用作数据展示,如下图。
后序
几天后我回到学校,突发奇想,这个小玩意锦上添花多一点的话,没准还可以申请个知识产权,于是后来我用自学的专业知识写了一张神经网络用来预测和分类中国最好大学网的这些数据。有机会的话,下次博客,就写一下关于最基本的BP神经网络的基本运用和**函数的挑选方式吧。