目录
前言
pyecharts是基于Echart图表的一个类库,而Echart是百度开源的一个可视化JavaScript库。
pyecharts主要基于web浏览器进行显示,绘制的图形比较多,包括折线图、柱状图、饼图、漏斗图、地图、极坐标图等,代码量很少,而且很灵活,绘制出来的图形很美观。
使用pyecharts时,需要安装相应的库,安装命令为:
pip install pyecharts
相关案例与解析
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
%matplotlib inline #在线显示
pyecharts是基于Echart图表的一个类库,而Echart是百度开源的一个可视化JavaScript库。
pyecharts主要基于web浏览器进行显示,绘制的图形比较多,包括折线图、柱状图、饼图、漏斗图、地图、极坐标图等,代码量很少,而且很灵活,绘制出来的图形很美观。
图形绘制过程,基本上所有的图表类型都是这样绘制的:
chart_name = Type() #初始化具体类型图表chart_name .add() #添加数据及配置项chart_name .render()#生成本地文件(html/svg/jpeg/png/pdf/gif)chart_name .render_notebook #在jupyter notebook中显示
利用Bar方法可以绘制柱状图:
方法使用说明
add_xaxis加入x轴参数
add_yaxis加入y轴参数,可以设置y轴参数,也可在全局设置中设置
set_global_opts全局配置设置
set_series_opts系列配置设置
例8-1 使用Bar函数绘制柱状图
In [13]:
bar = (Bar(opts.InitOpts(width = '360px',height = '280px'))#修改宽度和高度
.add_xaxis(['衬衫','毛衣','领带','裤子','风衣','高跟鞋','袜子'])#x轴
.add_yaxis('商家A',[114,55,27,101,125,27,105])#y轴
.set_global_opts(title_opts = opts.TitleOpts(title = '某商场销售情况')))
#set_global_opts设置全局配置设置
bar.render_notebook()
#bar.render
Out[13]:
V1版本开始支持链式调用,如果不习惯链式调用的开发者依旧可以单独调用方法,上面代码为:
使用多个add_yaxis可以绘制并列柱状图。
In [14]:
#单独调用方法
bar = Bar(opts.InitOpts(width = '360px',height = '280px'))
bar.add_xaxis(['衬衫','毛衣','领带','裤子','风衣','高跟鞋','袜子'])
bar.add_yaxis('商家A',[114,55,27,101,125,27,105])
bar.set_global_opts(title_opts = opts.TitleOpts(title = '某商场销售情况'))
bar.render_notebook()
Out[14]:
例8-2 绘制并列柱状图
In [15]:
bar = Bar(opts.InitOpts(width = '600px',height = '400px'))
bar.add_xaxis(['衬衫','毛衣','领带','裤子','风衣','高跟鞋','袜子'])
bar.add_yaxis('商家A',[114,55,27,101,125,27,105])
bar.add_yaxis('商家B',[57,143,137,129,145,60,49])
bar.set_global_opts(title_opts = opts.TitleOpts(title = '货品销售情况',
subtitle = 'A和B公司'))
bar.render_notebook()
Out[15]:
例8-3 绘制水平直方图
In [16]:
bar = Bar(opts.InitOpts(width = '660px',height = '480px'))
bar.add_xaxis(['衬衫','毛衣','领带','裤子','风衣','高跟鞋','袜子'])
bar.add_yaxis('商家A',[114,55,27,101,125,27,105])
bar.add_yaxis('商家B',[57,143,137,129,145,60,49])
bar.set_global_opts(title_opts = opts.TitleOpts(title = '货品销售情况',
subtitle = 'A和B公司'),toolbox_opts = opts.ToolboxOpts(is_show = True))
#subtitle 设置副标题 ToolboxOpts工具栏
bar.set_series_opts(label_opts = opts.LabelOpts(position = 'right'))
#set_series_opts系列配置设置 position = 'right'显示在右侧
bar.reversal_axis()#将轴逆向
bar.render_notebook()
Out[16]:
饼图常用于表现不同类别的占比情况。利用Pie方法可以绘制饼图
例8-4 绘制饼图
In [17]:
from pyecharts.charts import Pie#引入pie模块
L1 = ['教授','副教授','讲师','助教','其他']#定义两个列表
num = [20,30,10,12,8]
c = Pie(opts.InitOpts(width = '660px',height = '480px'))#修改尺寸
c.add("",[list(z) for z in zip(L1,num)])
#""表示不加饼图名称 饼图里面的是元组数据 list里面的数据需要配对成元组
c.set_global_opts(title_opts = opts.TitleOpts(title = 'Pie-职称类别比例'))
c.set_series_opts(label_opts = opts.LabelOpts(formatter = "{b} : {c}"))
#formatter = "{b} : {c}"b指的时L1,c指的是数字 如果为ab,则a指的是series[]0 a指的是系列
c.render_notebook()
Out[17]:
例8-5 绘制圆环饼图
In [18]:
from pyecharts.charts import Pie
wd = ['教授','副教授','讲师','助教','其他']
num = [20,30,10,12,8]
c = Pie(opts.InitOpts(width = '660px',height = '380px'))
c.add("",[list(z) for z in zip(wd,num)],radius = ['40%','75%'])
#radius = ['40%','75%']前面是内径,后面是外径
c.set_global_opts(title_opts = opts.TitleOpts(title = 'Pie-Radius'),#名称
legend_opts = opts.LegendOpts(orient = 'vertical',pos_top = '5%',pos_left = '2%'))
#legend_opts 默认居中显示 orient将legend的方向改为竖向【verticalc】 pos_top距离上面5%距离左2%
c.set_series_opts(label_opts = opts.LabelOpts(formatter = "{b} : {c}"))
c.render_notebook()
Out[18]:
例8-6 圆形饼图中的rich参数应用
In [19]:
from pyecharts.charts import Pie
wd = ['教授','副教授','讲师','助教','其他']
num = [20,30,10,12,8]
c = Pie(opts.InitOpts(width = '660px',height = '480px'))
c.add("",[list(z) for z in zip(wd,num)],radius = ['40%','55%'],
label_opts = opts.LabelOpts(position = 'outside',
formatter = "{a|{a}}{abg|}\n{hr|}\n{b|{b} :}{c} {per|{d}%}",
background_color = '#eee',border_color = "#aaa",
border_width = 1,border_radius = 4,
rich = {"a":{"color":"#999","lineHeight":22,"align":"center"},
"abg":{"backgroundColor":"#e3e3e3","width":"100%","align":"right",
"height":22,"borderRadius":{4,4,0,0,0}},
"hr":{"borderColor":"#aaa","width":"100%","borderWidth":0.5,"height":0},
"b":{"fontSize":16,"lineHeight":33},
"per":{"color":"#eee","backgroundColor":"#334455","padding":[2,4],"borderRadius":2}}))
#label_opts 标签 position = 'outside'默认在里面【inside】,此处在外面显示
#formatter富文本的添加 后面加上颜色 大小 圆角
#rich参数的使用 a是富文本的号 设置其颜色,高度,居中 hr设置的文本里面的中间的线 per是百分比的设置
c.set_global_opts(title_opts = opts.TitleOpts(title = 'Pie-富文本示例'))
c.render_notebook()
Out[19]:
例8-7 绘制玫瑰图
In [20]:
from pyecharts.charts import Pie
wd = ['教授','副教授','讲师','助教','其他']
num = [20,30,10,12,8]
c = Pie(opts.InitOpts(width = '660px',height = '380px'))
c.add("",[list(z) for z in zip(wd,num)],radius = ['40%','55%'],
center = [200,220],rosetype = 'radius')
#center = [200,220]进行平移 rosetype = 'radius'玫瑰图扇区的圆心角【展示圆心的百分比】半径展现数据的大小
c.add("",[list(z) for z in zip(wd,num)],radius = ['40%','55%'],
center = [450,220],rosetype = 'area')#area平均的圆心角相同 仅通过半径大小展示数据的大小
c.set_global_opts(title_opts = opts.TitleOpts(title = '玫瑰图'))
c.render_notebook()
Out[20]:
例8-8 绘制漏斗图https://blog.csdn.net/Tomandjava/article/details/117198522?
(https://blog.csdn.net/Tomandjava/article/details/117198522?
In [21]:
from pyecharts.charts import Funnel
data = [45,86,39,52,68]
labels = ['计算机','手机','电视机','冰箱','洗衣机']
wf = Funnel(opts.InitOpts(width = '560px',height = '380px'))
wf.add('电器销售图',[list(z) for z in zip(labels,data)],is_selected = True)
#is_selected = True初始就选中所有图例
wf.render_notebook()
Out[21]:
例8-9 绘制散点图
In [22]:
from pyecharts.charts import Scatter
week = ['周一','周二','周三','周四','周五','周六','周日']
c = Scatter(opts.InitOpts(width = '660px',height = "380px"))
c.add_xaxis(week)#x轴
c.add_yaxis("商家A",[81,65,48,32,68,92,87])#加入与前面的一一对应
c.set_global_opts(title_opts = opts.TitleOpts(title = "Scatter-一周销售额(万元)"))
c.render_notebook()
Out[22]:
例8-10 绘制K线图 [pyecharts学习笔记]——全局配置项(AxisOpts坐标轴配置项)_卖山楂啦prss的博客-CSDN博客_pyecharts 坐标轴位置 ([pyecharts学习笔记]——全局配置项(AxisOpts坐标轴配置项)_卖山楂啦prss的博客-CSDN博客_pyecharts 坐标轴位置)
In [23]:
from pyecharts.charts import Kline
data = [[2320.26, 2320.26, 2287.3, 2362.94],
[2300, 2291.3, 2288.26, 2308.38],
[2295.35, 2346.5, 2295.35, 2345.92],
[2347.22, 2358.98, 2337.35, 2363.8],
[2360.75, 2382.48, 2347.89, 2383.76],
[2383.43, 2385.42, 2371.23, 2391.82],
[2377.41, 2419.02, 2369.57, 2421.15],
[2425.92, 2428.15, 2417.58, 2440.38],
[2411, 2433.13, 2403.3, 2437.42],
[2432.68, 2334.48, 2427.7, 2441.73],
[2430.69, 2418.53, 2394.22, 2433.89],
[2416.62, 2432.4, 2414.4, 2443.03],
[2441.91, 2421.56, 2418.43, 2444.8],
[2420.26, 2382.91, 2373.53, 2427.07],
[2383.49, 2397.18, 2370.61, 2397.94],
[2378.82, 2325.95, 2309.17, 2378.82],
[2322.94, 2314.16, 2308.76, 2330.88],
[2320.62, 2325.82, 2315.01, 2338.78],
[2313.74, 2293.34, 2289.89, 2340.71],
[2297.77, 2313.22, 2292.03, 2324.63],
[2322.32, 2365.59, 2308.92, 2366.16],
[2364.54, 2359.51, 2330.86, 2369.65],
[2332.08, 2273.4, 2259.25, 2333.54],
[2274.81, 2326.31, 2270.1, 2328.14],
[2333.61, 2347.18, 2321.6, 2351.44],
[2340.44, 2324.29, 2304.27, 2352.02],
[2326.42, 2318.61, 2314.59, 2333.67],
[2314.68, 2310.59, 2296.58, 2320.96],
[2309.16, 2286.6, 2264.83, 2333.29],
[2282.17, 2263.97, 2253.25, 2286.33],
[2255.77, 2270.28, 2253.31, 2276.22] ]
c = Kline(opts.InitOpts(width = '660px',height = '380px'))
c.add_xaxis(["2019/7/{}".format(i+1) for i in range(31)])#x轴加的是2019年的7月几号
c.add_yaxis("2019年7月份K线图",data)
#全局参数的设置
c.set_global_opts(yaxis_opts = opts.AxisOpts(is_scale = True),
# 只在数值轴中(type: 'value')有效
# 是否是脱离 0 值比例。设置成 true 后坐标刻度不会强制包含零刻度。在双数值轴的散点图中比较有用。
# 在设置 min 和 max 之后该配置项无效。
xaxis_opts = opts.AxisOpts(is_scale = True),#is_scale = True是否显示 x 轴。
title_opts = opts.TitleOpts(title = "Kline - 基本示例"))
c.render_notebook()
Out[23]:
例8-11 绘制仪表盘 使用 Pyecharts 制作Gauge(仪表盘) - 知乎 (使用 Pyecharts 制作Gauge(仪表盘) - 知乎)
In [24]:
#车的转速,车速
from pyecharts.charts import Gauge,Page
c = Gauge(opts.InitOpts(width = "600px",height = '380px'))
#指示针的颜色与数值所属区间的颜色一致
c.add("业务指标",[("完成率",55.5)],axisline_opts = opts.AxisLineOpts(
linestyle_opts = opts.LineStyleOpts(color = [(0.3,"#67e0e3"),(0.7,"#37a2da"),(1,"#fd666d")],width = 30)),
#改变颜色 加上宽度
detail_label_opts=opts.LabelOpts(formatter="{value}%",font_size=22, color="black", font_family="Microsoft YaHei"))
#加上他的形式
c.set_global_opts(title_opts = opts.TitleOpts(title = "Gauge - 不听颜色"),
legend_opts = opts.LegendOpts(is_show = False))#将业务指标去掉
c.render_notebook()
Out[24]:
例8-12 绘制词云
一、 安装需要的包
(1)WordCloud
(2)jieba
conda install -c conda-forge jieba
二、 词云生成过程
一般生成词云的过程为:
(1)首先使用pandas读取数据并将需要分析的数据转化为列表;
(2)对获得的列表数据利用分词工具jieba进行遍历分词;
(3)使用WordCloud设置词云图片的属性、掩码和停用词,并 生成词云图像。
In [25]:
from pyecharts.charts import Page,WordCloud
from pyecharts.globals import SymbolType
words = words = [("牛肉面",7800),("黄河",6181),
("《读者》杂志", 4386), ("甜胚子", 3055),
("甘肃省博物馆", 2055),("莫高窟", 8067),("兰州大学", 4244),
("西北师范大学", 1868),("中山桥", 3484),
("月牙泉", 1112),("五泉山", 980),
("五彩丹霞", 865),("黄河母亲", 847),("崆峒山",678),
("羊皮筏子", 1582),("兴隆山",868),
("兰州交通大学", 1555),("白塔山", 2550),("五泉山", 2550)]
c = WordCloud(opts.InitOpts(width = '600px',height = '380px'))
c.add("",words,word_size_range = [20,60])#word_size_range最小字和最大字的范围
c.set_global_opts(title_opts = opts.TitleOpts(title = 'WordCloud - 基本示例'))
c.render_notebook()
Out[25]:
例8-13 组合图表上下布局
In [26]:
from pyecharts.charts import Bar,Grid,Line,Scatter
A = ['小米','三星','华为','苹果','魅族','VIVO','OPPO']
CA = [100,125,87,90,78,98,118]
B = ['草莓','芒果','葡萄','雪梨','西瓜','柠檬','车厘子']
CB = [78,95,120,102,88,108,98]
bar = Bar()
bar.add_xaxis(A)
bar.add_yaxis("商家A",CA)
bar.add_yaxis("商家B",CB)
bar.set_global_opts(title_opts = opts.TitleOpts(title = 'Grid - Bar'))
bar.render_notebook()
#折线图
line = Line()
line.add_xaxis(B)
line.add_yaxis("商家A",CA)
line.add_yaxis("商家B",CB)
line.set_global_opts(title_opts = opts.TitleOpts(title = 'Grid - Line',pos_top = "48%"),
legend_opts = opts.LegendOpts(pos_top = "48%"))
#距离上侧48%
line.render_notebook()
grid = Grid(opts.InitOpts(width = '600px',height = '580px'))#用grid分图
grid.add(bar,grid_opts = opts.GridOpts(pos_bottom = "60%"))#bar距离底部60%的地方加入
grid.add(line,grid_opts = opts.GridOpts(pos_top = "60%"))#line距离顶部60%的地方加入
# grid.add(bar,grid_opts = opts.GridOpts(pos_left = "50%"))
# grid.add(line,grid_opts = opts.GridOpts(pos_right = "50%"))
grid.render_notebook()
Out[26]:
例8-14 桑基图绘制示例
In [27]:
#宽度对应于数据流量的大小,应用与能量,材料成分金融
from pyecharts.charts import Sankey
df = pd.DataFrame({'性别':['男','男','男','女','女','女'],
'熬夜原因':['打游戏','看剧','加班','打游戏','看剧','加班'],
'人数':[40,20,40,8,25,36]})
#print(df)
nodes = []#设置一个空列表
for i in range(2):
values = df.iloc[:,i].unique()#:所有的行 和列,去掉重复值
for value in values:
dic = {}#字典
dic['name'] = value#加了名称
nodes.append(dic)#生成一个value就往dic里面加入
#这些执行完成之后是将nodes里面放入数据
#print(df.values)
links = []#空列表
for i in df.values:#从df当中取值
dic = {}
dic['source'] = i[0]#source读取第0列
dic['target'] = i[1]
dic['value'] = i[2]
links.append(dic)
#print(links)
c = (Sankey(opts.InitOpts(width = '600px',height = '380px'))
.add("sankey",nodes,links,#添加数据
linestyle_opt = opts.LineStyleOpts(opacity = 0.2,curve = 0.5,color = 'source'),
#opacity透明度 curve弯曲度 加入颜色
label_opts = opts.LabelOpts(position = 'right'),node_gap=25)
#标签设置到右侧 node_gap标签的间距调整
.set_global_opts(title_opts = opts.TitleOpts(title = "Sankey - 熬夜原因")))
c.render_notebook()
Out[27]:
例8-15 pyecharts绘制平行坐标图示例
In [3]:
#多属性值之间的关系
from pyecharts.charts import Parallel
import seaborn as sns
import numpy as np
data = pd.read_csv('iris.csv')
#data
data_1 = np.array(data[['Sepal.Length','Sepal.Width','Petal.Length','Petal.Width']]).tolist()
#array生成数组之后用tolist()抓换为列表
#data_1
parallel_axis = [{"dim":0,"name":"萼片长度"},#轴
{"dim":1,"name":"萼片宽度"},
{"dim":2,"name":"花瓣长度"},
{"dim":3,"name":"花瓣宽度"}]
parallel = Parallel(init_opts = opts.InitOpts(width = '600px',height = '400px'))
#绘制图纸
parallel.add_schema(schema = parallel_axis)#加平行坐标的坐标轴
parallel.add('iris平行坐标图',data = data_1,
linestyle_opts = opts.LineStyleOpts(width = 4,opacity = 0.5))
#设置线宽 opacity = 0.5设置透明度
parallel.render_notebook()
Out[3]:
例8-16 绘制指定结点和边的图
In [4]:
#顶点之间的关联关系
from pyecharts.charts import Graph
nodes_data = [
opts.GraphNode(name = '结点1',symbol_size = 18),#节点名称和节点大小
opts.GraphNode(name = '结点2',symbol_size = 20),
opts.GraphNode(name = '结点3',symbol_size = 15),
opts.GraphNode(name = '结点4',symbol_size = 30),
opts.GraphNode(name = '结点5',symbol_size = 25),
opts.GraphNode(name = '结点6',symbol_size = 15),
]
links_data = [
opts.GraphLink(source = '结点1',target = '结点2',value = 2),
#边的起始点和结束点,以及权值
opts.GraphLink(source = '结点1',target = '结点4',value = 7),
opts.GraphLink(source = '结点1',target = '结点6',value = 5),
opts.GraphLink(source = '结点2',target = '结点3',value = 3),
opts.GraphLink(source = '结点2',target = '结点6',value = 5),
opts.GraphLink(source = '结点3',target = '结点4',value = 4),
opts.GraphLink(source = '结点3',target = '结点5',value = 7),
opts.GraphLink(source = '结点4',target = '结点5',value = 5),
opts.GraphLink(source = '结点4',target = '结点6',value = 4),
opts.GraphLink(source = '结点5',target = '结点6',value = 6),
opts.GraphLink(source = '结点6',target = '结点1',value = 7),
]
c = Graph(init_opts = opts.InitOpts(width = '600px',height = '400px'))#初始参数
c.add("",nodes_data,links_data,repulsion = 4000)#repulsion = 4000斥力效果,图的弹性效果
c.set_global_opts(title_opts = opts.TitleOpts(title = "Graph - Example"))
c.render_notebook()
Out[4]:
自从 0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表(Geo、Map),可自行安装对应的地图文件包。
Windows下通过以下的pip命令进行安装:
#安装全球国家地图,包括世界地图和 213 个国家
pip install echarts-countries-pypkg
#安装中国省级地图,包括23 个省,5 个自治区
pip install echarts-china-provinces-pypkg
#中国市级地图,包括370 个中国城市
pip install echarts-china-cities-pypkg
In [28]:
from pyecharts.charts import Map
temperature = [30,31,27,29,18]
loc = ['兰州市','天水市','白银市','武威市','甘南藏族自治区']
c = Map(init_opts = opts.InitOpts(width = '600px',height = '400px'))
c.add("甘肃省",[list(z) for z in zip(loc,temperature)],"甘肃",is_roam = True)
#两个;列表组合起来 is_roam = True开启鼠标缩放 改为false之后就不可以缩放了
c.render_notebook()
Out[28]:
地理方位流动图
In [30]:
from pyecharts.charts import Geo
from pyecharts.globals import ChartType,SymbolType
c = (Geo(init_opts = opts.InitOpts(width = '600px',height = '400px'))
.add_schema(maptype = "china")#类型是中国
.add("航班",[("哈尔滨",66),("重庆",88),("上海",100),("乌鲁木齐",30),("北京",30),("兰州",170)],
type_ = ChartType.EFFECT_SCATTER,color = "green")
#加入省市之间的航班 type_ = ChartType.EFFECT_SCATTER【点的类型为带波纹的点】
.add("地方",[("北京","兰州"),("兰州","北京"),("重庆","杭州"),("哈尔滨","重庆"),("乌鲁木齐","哈尔滨")],
type_ = ChartType.LINES,#线的类型
#箭头的反映 symbol_size尺寸为6 动态效果颜色为蓝色
effect_opts = opts.EffectOpts(symbol = SymbolType.ARROW,symbol_size = 6,color = "blue"),
linestyle_opts = opts.LineStyleOpts(curve = 0.2))#设置曲度
.set_series_opts(label_opts = opts.LabelOpts(is_show = False))#去掉主要航线标签
.set_global_opts(title_opts = opts.TitleOpts(title = "主要城市航班路线和数量")))
c.render_notebook()
Out[30]:
实训1 绘制统计某天多省区连续确认病例无新增天数的玫瑰图
In [31]:
from pyecharts import options as opts
from pyecharts.charts import Pie
import pandas as pd
provinces = ['北京','上海','黑龙江','吉林','辽宁','内蒙古','新疆','西藏','青海',
'四川','云南','陕西','重庆','贵州','广西','海南','澳门','湖南','江西',
'福建','安徽','浙江','江苏','宁夏','山西','河北','天津']
num = [1,1,1,17,9,22,23,42,35,7,20,21,16,24,16,21,37,12,13,14,13,7,22,8,16,13,13]
df = pd.DataFrame({'provinces':provinces,'num':num})
df.sort_values(by = 'num',ascending = False,inplace = True)#df本身排序
v = df['provinces'].values.tolist()#取df里面的数据转换为列表
d = df['num'].values.tolist()
c = Pie(init_opts = opts.InitOpts(width = '720px',height = '600px'))#初始化饼图
c.add("",[list(z) for z in zip(v,d)],
radius = ["30%","80%"],center = ["50%","50%"],#位置变成横向和纵向50%
rosetype = "area")#只用半径展示数据大小
color_series = ['#FAE927','#E9E416','#C9DA36','#9ECB3C','#6DBC49',
'#37B44E','#3DBA78','#14ADCF','#209AC9','#1E91CA',
'#2C6BA0','#2B55A1','#2D3D8E','#44388E','#6A368B',
'#7D3990','#A63F98','#C31C88','#D52178','#D5225B',
'#D02C2A','#D44C2D','#F57A34','#FA8F2F','#D99D21',
'#CF7B25','#CF7B25','#CF7B25']#重新添加颜色值
c.set_colors(color_series)#插入颜色值
c.set_global_opts(title_opts = opts.TitleOpts(title = '多省区市\n确诊病例连续多日',subtitle = '零新增',#图集主和子标签
title_textstyle_opts = opts.TextStyleOpts(font_size = 25,color = '#0085c3'),
subtitle_textstyle_opts = opts.TextStyleOpts(font_size = 50,color = '#003399'),
pos_right = 'center',pos_left = "center",pos_top ="42%",pos_bottom = 'center'),
legend_opts = opts.LegendOpts(is_show = False),toolbox_opts = opts.ToolboxOpts)#工具栏
#标签的设置
c.set_series_opts(label_opts = opts.LabelOpts(is_show = True,position = "inside",#inside不引出来内部显示
font_size = 12,formatter = "{b}:{c}天",#形式
font_style = 'italic',font_weight = 'bold',#类型是斜体【italic】加粗
font_family = "SimHei"))#黑体
c.render_notebook()
Out[31]:
- 绘制数据的柱状图 [pyecharts学习笔记]——Bar 柱状图/条形图_卖山楂啦prss的博客-CSDN博客_pyecharts bar负数 ([pyecharts学习笔记]——Bar 柱状图/条形图_卖山楂啦prss的博客-CSDN博客_pyecharts bar负数)
In [9]:
from pyecharts.charts import Bar
from pyecharts.globals import ThemeType
items = ['相机','短视频','视频','浏览器','商城','购票','小说','聊天','小工具','理财记帐']
sum_app = [[5045137.0],[4608092.0],[35723063.0],[23775808.0],[15367847.0],
[10424808.0],[76975429.0],[7393185.0],[64636392.0],[50491990.0]]
#初始化主题的时候可以改变整体效果
bar = Bar(init_opts = opts.InitOpts(theme = ThemeType.LIGHT,#更改主题
width = '700px',height = '480px'))
bar.add_xaxis(['App类别'])
for item in items:
bar.add_yaxis(item,sum_app[items.index(item)])
bar.set_global_opts(title_opts = opts.TitleOpts(title = "Apps",
subtitle = '下载数量'))
bar.render_notebook()
Out[9]:
2.绘制各类App下载量的饼图
In [10]:
from pyecharts.charts import Pie
items = ['相机','短视频','视频','浏览器','商城','购票','小说','聊天','小工具','理财记帐']
sum_app = [[5045137.0],[4608092.0],[35723063.0],[23775808.0],[15367847.0],
[10424808.0],[76975429.0],[7393185.0],[64636392.0],[50491990.0]]
pie = Pie(init_opts = opts.InitOpts(theme = ThemeType.INFOGRAPHIC,
width = '500px',height = '380px'))
pie.add("",data_pair =
[(item,sum_app[items.index(item)]) for item in items],
radius = ["30%","75%"],center = ["50%","50%"],rosetype = "radius",
label_opts = opts.LabelOpts(is_show = False))
pie.set_global_opts(title_opts = opts.TitleOpts(title ="App下载\n数据占比"))
pie.set_series_opts(label_opts = opts.LabelOpts(formatter = "{b} : {c}"))
pie.render_notebook()
Out[10]:
- 绘制各类App下载量的涟漪特效散点图
In [11]:
from pyecharts.charts import EffectScatter
items = ['相机','短视频','视频','浏览器','商城','购票','小说','聊天','小工具','理财记帐']
sum_app = [[5045137.0],[4608092.0],[35723063.0],[23775808.0],[15367847.0],
[10424808.0],[76975429.0],[7393185.0],[64636392.0],[50491990.0]]
c = EffectScatter(init_opts = opts.InitOpts(width = '800px',height = '400px'))
c.add_xaxis(items)
c.add_yaxis("",sum_app,color = False)
c.set_global_opts(title_opts = opts.TitleOpts(title ="App下载数量"))
c.render_notebook()
Out[11]:
写在最后:
此处的数据是来源于我自己的数据,想要的宝子可以私信我要奥,也希望我写的博文能帮到你们。文章当中的图片由于一些原因无法展示,希望各位宝子可以见谅哈!各位宝子也可以自行验证