一、 使用pyecharts绘制图表
1、 概述
Pyecharts是由百度提供的js组件库,使用python语言可以调用pyecharts组件生成各种图表。
2、 绘制的常用图表类型
条形图、饼图、折线图、散点图、雷达图和词云。
3、 安装pyecharts
(1) pip install pyecharts
(2) 在pycharm中安装
Settings-project interceptor–±—输入pyecharts,点击install安装
二、 使用pyecharts的绘图步骤
1、 创建图表对象
bar=Bar() #创建条形图对象
2、 使用add方法添加集合数据,并设置属性
bar.add(集合参数,…)
3、 显示配置信息
bar.show_config()#只适用于pyecharts0.5.11版本,1.9之后已经弃用
4、 生成html文件
bar.render(“文件名称.html”)
三、 常用图形的绘制
1、 使用pyecharts 0.5.11版本绘制柱状图
绘制的示例:
from pyecharts import Bar
#创建条形图对象
bar=Bar(“销售数量”,“服装销售数量”)
names=[‘大衣’,‘羽绒服’,‘帽子’,‘棉靴’,‘手套’]
nums=[20,50,30,40,20]
bar.add(“服装销售”,names,nums)
bar.show_config()
bar.render(“bar.html”)
使用pyecharts1.9版本绘制柱状图
from pyecharts.charts import Bar
from pyecharts import options as opts #引入配置类
x=[‘大衣’,‘羽绒服’,‘帽子’,‘棉靴’,‘手套’]
y1=[114,55,27,101,125,27,105]
y2=[57,134,101,22,69,90,129]
#创建柱状图对象
bar=Bar()
bar.add_xaxis(x)
bar.add_yaxis(“淘宝”,y1)
bar.add_yaxis(“京东”,y2)
#设置配置信息(标题)
bar.set_global_opts(title_opts=opts.TitleOpts(title=‘商品销售’),toolbox_opts=opts.ToolboxOpts(is_show=True))#让标题呈现
bar.set_series_opts(label_opts=opts.LabelOpts(position=“Top”))
#生成文件
bar.render(“bar1.html”)
轴交换
from pyecharts.charts import Bar
from pyecharts import options as opts #引入配置类
x=[‘大衣’,‘羽绒服’,‘帽子’,‘棉靴’,‘手套’]
y1=[114,55,27,101,125,27,105]
y2=[57,134,101,22,69,90,129]
#创建柱状图对象
bar=Bar()
bar.add_xaxis(x) #添加x轴坐标的信息
bar.add_yaxis(“淘宝”,y1) #添加y轴的信息
bar.add_yaxis(“京东”,y2) #添加y轴的信息
#设置配置信息(标题)
bar.set_global_opts(title_opts=opts.TitleOpts(title=‘商品销售’),toolbox_opts=opts.ToolboxOpts(is_show=True))#让标题呈现
bar.set_series_opts(label_opts=opts.LabelOpts(position=“Top”))
bar.reversal_axis()#x和y轴坐标进行交换
#生成文件
bar.render(“bar1.html”)
2、 绘制饼图Pie(pyecharts1.9版本)
from pyecharts.charts import Pie
from pyecharts import options as opts #引入配置类
names=[‘大衣’,‘羽绒服’,‘帽子’,‘棉靴’,‘手套’]
nums=[114,55,27,101,125,27,105]
#创建饼图对象
pie=Pie()
pie.add(“服装销售”,[list(dic) for dic in zip(names,nums)])
#设置配置信息(标题)
pie.set_global_opts(title_opts=opts.TitleOpts(title=‘商品销售’),toolbox_opts=opts.ToolboxOpts(is_show=True))#让标题呈现
#pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{pie}"))
pie.render(“pie.html”)
绘制环形图
from pyecharts.charts import Pie
from pyecharts import options as opts #引入配置类
names=[‘大衣’,‘羽绒服’,‘帽子’,‘棉靴’,‘手套’]
nums=[114,55,27,101,125,27,105]
#创建饼图对象
pie=Pie()
pie.add(“服装销售”,[list(dic) for dic in zip(names,nums)],radius=[“75%”,“40%”])
#设置配置信息(标题)
pie.set_global_opts(title_opts=opts.TitleOpts(title=‘商品销售’),toolbox_opts=opts.ToolboxOpts(is_show=True))#让标题呈现
#pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{pie}"))
pie.render(“pie1.html”)
玫瑰图
from pyecharts.charts import Pie
from pyecharts import options as opts #引入配置类
names=[‘大衣’,‘羽绒服’,‘帽子’,‘棉靴’,‘手套’]
nums=[114,55,27,101,125,27,105]
#创建饼图对象
pie=Pie()
pie.add(“服装销售”,[list(dic) for dic in zip(names,nums)],radius=[“40%”,“75%”],rosetype=“area”)
#设置配置信息(标题)
pie.set_global_opts(title_opts=opts.TitleOpts(title=‘商品销售’),
toolbox_opts=opts.ToolboxOpts(is_show=True),
legend_opts=opts.LegendOpts(orient=‘vertical’,pos_top=‘5%’,pos_left=“2%”)#显示图例
)#让标题呈现
#pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{pie}"))
pie.render(“pie2.html”)
3.散点图Scatter
from pyecharts.charts import Scatter
from pyecharts import options as opts #引入配置类
x=[‘大衣’,‘羽绒服’,‘帽子’,‘棉靴’,‘手套’]
y1=[114,55,27,101,125,27,105]
y2=[57,134,101,22,69,90,129]
#创建散点图对象
sc=Scatter()
sc.add_xaxis(x) #添加x轴坐标的信息
sc.add_yaxis(“淘宝”,y1) #添加y轴的信息
sc.add_yaxis(“京东”,y2) #添加y轴的信息
#设置配置信息(标题)
sc.set_global_opts(title_opts=opts.TitleOpts(title=‘商品销售’),toolbox_opts=opts.ToolboxOpts(is_show=True))#让标题呈现
sc.set_series_opts(label_opts=opts.LabelOpts(position=“Top”))
#生成文件
sc.render(“scatter.html”)
4.使用grid表格呈现多图
from pyecharts.charts import Bar,Line,Grid
from pyecharts import options as opts #引入配置类
#绘制柱状图#########################################
x=[‘大衣’,‘羽绒服’,‘帽子’,‘棉靴’,‘手套’]
y1=[114,55,27,101,125,27,105]
y2=[57,134,101,22,69,90,129]
#创建柱状图对象
bar=Bar()
bar.add_xaxis(x) #添加x轴坐标的信息
bar.add_yaxis(“淘宝”,y1) #添加y轴的信息
bar.add_yaxis(“京东”,y2) #添加y轴的信息
#设置配置信息(标题)
bar.set_global_opts(title_opts=opts.TitleOpts(title=‘商品销售’),toolbox_opts=opts.ToolboxOpts(is_show=True))#让标题呈现
bar.set_series_opts(label_opts=opts.LabelOpts(position=“Top”))
#######################################################################
###############绘制折线图##############################################
#创建柱状图对象
line=Line()
line.add_xaxis(x) #添加x轴坐标的信息
line.add_yaxis(“淘宝”,y1) #添加y轴的信息
line.add_yaxis(“京东”,y2) #添加y轴的信息
#设置配置信息(标题)
line.set_global_opts(title_opts=opts.TitleOpts(title=‘商品销售’),toolbox_opts=opts.ToolboxOpts(is_show=True))#让标题呈现
line.set_series_opts(label_opts=opts.LabelOpts(position=“Top”))
#######################################################################
#####创建gride对象,添加柱状图和折线图到grid中
grid=Grid()
grid.add(bar,grid_opts=opts.GridOpts(pos_bottom=“60%”))
grid.add(line,grid_opts=opts.GridOpts(pos_top=“60%”))
grid.render(“grid.html”)
6.构建雷达图
from pyecharts.charts import Radar
from pyecharts import options as opts #引入配置类
#由于雷达图传入的数据得为多维数据,所以这里需要做一下处理
#2个系列的5个维度的数据
value1 = [[0.79,0.90,0.46,0.57,-0.50]]
value2 = [[0.11,0.34,0.31,-0.11,0.21]]
#用于调整雷达各维度的范围大小
c_schema= [{“name”: “O”, “max”: 1, “min”: -1},
{“name”: “C”, “max”: 1, “min”: -1},
{“name”: “E”, “max”: 1, “min”: -1},
{“name”: “A”, “max”: 1, “min”: -1},
{“name”: “N”, “max”: 1, “min”: -1}]
#画图
radar = Radar()
radar.add_schema(schema=c_schema)
radar.add(“Alen”, value1)
radar.add(“Bella”, value2)
radar.render(“rader.html”)
合并折线图和柱状图
from pyecharts import Bar
from pyecharts import Line
from pyecharts import Style
from pyecharts import Page
from pyecharts import Overlap
def create_charts():
page = Page()
x = [’{}年’.format(i)for i in range(1,12)]
y = [3,5,3,5,3,4,5,3,5,2,4]
y1=[1,2,3,4,5,6,7,8,9,10,11]
style = Style(height=600,width=1400)
bar = Bar(‘柱形图’,**style.init_style,background_color=[‘pink’])
line = Line()
line.add(’’,x,y,effect_scale=8)
line.add(’’,x,y1,effect_scale=10)
bar.add(‘商家A’,x,y,mark_line=[‘average’],mark_point=[‘min’,‘max’])
bar.add(‘商家B’,x,y1,mark_line=[‘average’],mark_point=[‘min’,‘max’],is_legend_show=True)
overlap = Overlap(height=450,width=1200)
overlap.add(bar)
overlap.add(line)
page.add(overlap)
return page
create_charts().render(‘1.html’)
词云图
from pyecharts import WordCloud #适用于pyecharts 0.5.11版本
name =[‘Sam S Club’, ‘Macys’, ‘Amy Schumer’, ‘Jurassic World’, ‘Charter Communications’, ‘Chick Fil A’, ‘Planet Fitness’, ‘Pitch Perfect’, ‘Express’, ‘Home’, ‘Johnny Depp’, ‘Lena Dunham’, ‘Lewis Hamilton’, ‘KXAN’, ‘Mary Ellen Mark’, ‘Farrah Abraham’, ‘Rita Ora’, ‘Serena Williams’, ‘NCAA baseball tournament’, ‘Point Break’]
value =[10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265]
wordcloud =WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud.show_config()
wordcloud.render(“word.html”)
折线图 pyecharts0.5.11
from pyecharts import Line
attr =[“衬衫”, “羊毛衫”, “雪纺衫”, “裤子”, “高跟鞋”, “袜子”]
v1 =[5, 20, 36, 10, 10, 100]
v2 =[55, 60, 16, 20, 15, 80]
line =Line(“折线图示例”)
line.add(“商家A”, attr, v1, mark_point=[“average”])
line.add(“商家B”, attr, v2, is_smooth=True, mark_line=[“max”, “average”])
line.show_config()
line.render(“lin.html”)
折线面积图pyecharts0.5.11
from pyecharts import Line
attr =[“衬衫”, “羊毛衫”, “雪纺衫”, “裤子”, “高跟鞋”, “袜子”]
v1 =[5, 20, 36, 10, 10, 100]
v2 =[55, 60, 16, 20, 15, 80]
line =Line(“折线图-面积图示例”)
line.add(“商家A”, attr, v1, is_fill=True, line_opacity=0.2, area_opacity=0.4, symbol=None)
line.add(“商家B”, attr, v2, is_fill=True, area_color=’#000’, area_opacity=0.3, is_smooth=True)
line.show_config()
line.render()
3D柱状图
from pyecharts import Bar3D
bar3d = Bar3D(“3D 柱状图示例”, width=1200, height=600)
x_axis = [
“12a”, “1a”, “2a”, “3a”, “4a”, “5a”, “6a”, “7a”, “8a”, “9a”, “10a”, “11a”,
“12p”, “1p”, “2p”, “3p”, “4p”, “5p”, “6p”, “7p”, “8p”, “9p”, “10p”, “11p”
]
y_axis = [
“Saturday”, “Friday”, “Thursday”, “Wednesday”, “Tuesday”, “Monday”, “Sunday”
]
data = [
[0, 0, 5], [0, 1, 1], [0, 2, 0], [0, 3, 0], [0, 4, 0], [0, 5, 0],
[0, 6, 0], [0, 7, 0], [0, 8, 0], [0, 9, 0], [0, 10, 0], [0, 11, 2],
[0, 12, 4], [0, 13, 1], [0, 14, 1], [0, 15, 3], [0, 16, 4], [0, 17, 6],
[0, 18, 4], [0, 19, 4], [0, 20, 3], [0, 21, 3], [0, 22, 2], [0, 23, 5],
[1, 0, 7], [1, 1, 0], [1, 2, 0], [1, 3, 0], [1, 4, 0], [1, 5, 0],
[1, 6, 0], [1, 7, 0], [1, 8, 0], [1, 9, 0], [1, 10, 5], [1, 11, 2],
[1, 12, 2], [1, 13, 6], [1, 14, 9], [1, 15, 11], [1, 16, 6], [1, 17, 7],
[1, 18, 8], [1, 19, 12], [1, 20, 5], [1, 21, 5], [1, 22, 7], [1, 23, 2],
[2, 0, 1], [2, 1, 1], [2, 2, 0], [2, 3, 0], [2, 4, 0], [2, 5, 0],
[2, 6, 0], [2, 7, 0], [2, 8, 0], [2, 9, 0], [2, 10, 3], [2, 11, 2],
[2, 12, 1], [2, 13, 9], [2, 14, 8], [2, 15, 10], [2, 16, 6], [2, 17, 5],
[2, 18, 5], [2, 19, 5], [2, 20, 7], [2, 21, 4], [2, 22, 2], [2, 23, 4],
[3, 0, 7], [3, 1, 3], [3, 2, 0], [3, 3, 0], [3, 4, 0], [3, 5, 0],
[3, 6, 0], [3, 7, 0], [3, 8, 1], [3, 9, 0], [3, 10, 5], [3, 11, 4],
[3, 12, 7], [3, 13, 14], [3, 14, 13], [3, 15, 12], [3, 16, 9], [3, 17, 5],
[3, 18, 5], [3, 19, 10], [3, 20, 6], [3, 21, 4], [3, 22, 4], [3, 23, 1],
[4, 0, 1], [4, 1, 3], [4, 2, 0], [4, 3, 0], [4, 4, 0], [4, 5, 1],
[4, 6, 0], [4, 7, 0], [4, 8, 0], [4, 9, 2], [4, 10, 4], [4, 11, 4],
[4, 12, 2], [4, 13, 4], [4, 14, 4], [4, 15, 14], [4, 16, 12], [4, 17, 1],
[4, 18, 8], [4, 19, 5], [4, 20, 3], [4, 21, 7], [4, 22, 3], [4, 23, 0],
[5, 0, 2], [5, 1, 1], [5, 2, 0], [5, 3, 3], [5, 4, 0], [5, 5, 0],
[5, 6, 0], [5, 7, 0], [5, 8, 2], [5, 9, 0], [5, 10, 4], [5, 11, 1],
[5, 12, 5], [5, 13, 10], [5, 14, 5], [5, 15, 7], [5, 16, 11], [5, 17, 6],
[5, 18, 0], [5, 19, 5], [5, 20, 3], [5, 21, 4], [5, 22, 2], [5, 23, 0],
[6, 0, 1], [6, 1, 0], [6, 2, 0], [6, 3, 0], [6, 4, 0], [6, 5, 0],
[6, 6, 0], [6, 7, 0], [6, 8, 0], [6, 9, 0], [6, 10, 1], [6, 11, 0],
[6, 12, 2], [6, 13, 1], [6, 14, 3], [6, 15, 4], [6, 16, 0], [6, 17, 0],
[6, 18, 0], [6, 19, 0], [6, 20, 1], [6, 21, 2], [6, 22, 2], [6, 23, 6]
]
range_color = [’#313695’, ‘#4575b4’, ‘#74add1’, ‘#abd9e9’, ‘#e0f3f8’, ‘#ffffbf’,
‘#fee090’, ‘#fdae61’, ‘#f46d43’, ‘#d73027’, ‘#a50026’]
bar3d.add(
“”,
x_axis,
y_axis,
[[d[1], d[0], d[2]] for d in data],
is_visualmap=True,
visual_range=[0, 20],
visual_range_color=range_color,
grid3d_width=200,
grid3d_depth=80,
is_grid3d_rotate=True
)
bar3d.render(‘bar3d.html’)