这篇文章主要介绍了python做图表的模块有哪些,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。
Source code download: 本文相关源码
目录
一、水球图
from pyecharts.charts import Liquid
lqd=Liquid()
#add传入数据
lqd.add('完成率',[0.6])
#绘制
lqd.render()
在它返回的路径下找到这个文件
用浏览器打开,(这其实是一张动图)
或者指定存储的目录和文件名
from pyecharts.charts import Liquid
lqd=Liquid()
#add传入数据
lqd.add('完成率',[0.6])
#绘制
lqd.render('/Users/Desktop/waterball.html')
简化版本的代码
from pyecharts.charts import Liquid
#先创建对象,然后add传入数据,最后绘制
Liquid().add('完成率',[0.6]).render('/Users/Desktop/waterball.html')
或者使用括号括起来,然后换行
from pyecharts.charts import Liquid
#先创建对象,然后add传入数据,最后绘制
(Liquid().add('完成率',[0.6])
.render('/Users/Desktop/waterball.html'))
绘图完成之后直接打开
from pyecharts.charts import Liquid
#先创建对象,然后add传入数据,最后绘制
f=(
Liquid()
.add('完成率',[0.6])
.render()
)
#python内置的打开浏览器的模块
import webbrowser as wb
wb.open(f)
或者是
from pyecharts.charts import Liquid
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
#先创建对象,然后add传入数据,最后绘制
Liquid().add('完成率',[0.6]).render_notebook()
添加标题
from pyecharts.charts import Liquid
#设置选项的库
import pyecharts.options as opts
#先创建对象,然后add传入数据,最后绘制
f=(
Liquid()
.add('完成率',[0.6])
.set_global_opts(
#设置标题
title_opts=opts.TitleOpts(
title='实习任务完成率',
pos_left='center'
)
)
.render()
)
#python内置的打开浏览器的模块
import webbrowser as wb
wb.open(f)
二、仪表盘图
from pyecharts.charts import Gauge
import pyecharts.options as opts
import webbrowser as wb
f=(
Gauge()
.add('',
[('完成率\n\n',76.5)],
min_=0,
max_=100
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2022年公司销售指标完成率',
pos_left='center'
)
)
.render('/Users/Desktop/Gauge.html')
)
from pyecharts.charts import Gauge
import pyecharts.options as opts
import webbrowser as wb
f=(
Gauge()
.add('',
#设置仪表盘指针的位置
[('完成率\n\n',76.5)],
#设置仪表盘的上限和下限
min_=0,
max_=100,
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(
#设置不同刻度区间的颜色
color=[
(0.25,'red'),
(0.50,'yellow'),
(0.75,'green'),
(1.00,'blue')
],
width=35
)
)
)
#设置标题
.set_global_opts(
title_opts=opts.TitleOpts(
title='2022年公司销售指标完成率',
pos_left='center'
)
)
.render('/Users/Desktop/Gauge.html')
)
一是,用’red’、’yellow’、’blue’等相应颜色的英文单词字符串来表示;
二是,用’#ff0000’、’#ffff00’、’#0000ff’等’#’开头并加上6位十六进制描述RGB颜色值的字符串来表示;
三是,用’rgb(255,0,0)’、’rgb(255,255,0)’、’rgb(0,0,255)’等rgb()函数的形式表示。
三、漏斗图
from pyecharts.charts import Funnel
import pyecharts.options as opts
import webbrowser as wb
from pyecharts.faker import Faker
#随机选择一个主题
labels=Faker.choose()
#随机选择一个数字
values=Faker.values()
#对标签和数字进行配对
data=list(zip(labels, values))
data
f=(
Funnel()
.add('', data)
.set_global_opts(title_opts=opts.TitleOpts(title='销量分析'))
.render('/Users/Desktop/faker.html')
)
默认是将标签放在外面的,我们这样修改一下,将标签放在里面
from pyecharts.charts import Funnel
import pyecharts.options as opts
import webbrowser as wb
from pyecharts.faker import Faker
#随机选择一个主题
labels=Faker.choose()
#随机选择一个数字
values=Faker.values()
#对标签和数字进行配对
data=list(zip(labels, values))
data
f=(
Funnel()
.add('',
data,
label_opts=opts.LabelOpts(
position='inside'
)
)
.set_global_opts(title_opts=opts.TitleOpts(title='销量分析'))
.render('/Users/Desktop/faker.html')
)
如何将漏斗倒过来(添加sort_的参数)
from pyecharts.charts import Funnel
import pyecharts.options as opts
import webbrowser as wb
from pyecharts.faker import Faker
#随机选择一个主题
labels=Faker.choose()
#随机选择一个数字
values=Faker.values()
#对标签和数字进行配对
data=list(zip(labels, values))
data
f=(
Funnel()
.add('',
data,
sort_='ascending',
label_opts=opts.LabelOpts(
position='inside'
)
)
.set_global_opts(title_opts=opts.TitleOpts(title='销量分析'))
.render('/Users/Desktop/faker.html')
)
四、热力图
from pyecharts.charts import HeatMap
import pyecharts.options as opts
from pyecharts.faker import Faker
import random
data=[(i,j,random.randint(0,150))
#模拟一周7天,24小时的降雨量
for i in range(24)
for j in range(7)]
f=(
HeatMap()
.add_xaxis(Faker.clock)
.add_yaxis('',Faker.week,data)
.set_global_opts(
title_opts=opts.TitleOpts(
title='一周降雨量分布情况',
pos_left='center'
),
visualmap_opts=opts.VisualMapOpts(
#将图例改成水平的
orient='horizontal',
max_=150,
#将我们的热力图条变成选择
is_piecewise=True,
#f放在正中间的位置
pos_left='center'
)
)
.render('/Users/Desktop/hotmap.html')
)
连续的选择调节
from pyecharts.charts import HeatMap
import pyecharts.options as opts
from pyecharts.faker import Faker
import random
data=[(i,j,random.randint(0,150))
#模拟一周7天,24小时的降雨量
for i in range(24)
for j in range(7)]
f=(
HeatMap()
.add_xaxis(Faker.clock)
.add_yaxis('',Faker.week,data)
.set_global_opts(
title_opts=opts.TitleOpts(
title='一周降雨量分布情况',
pos_left='center'
),
visualmap_opts=opts.VisualMapOpts(
#将图例改成水平的
orient='horizontal',
max_=150,
# is_piecewise=True,
#f放在正中间的位置
pos_left='center'
)
)
.render('/Users/Desktop/hotmap.html')
)
五、日历图
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(range_='2021')
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
标签使用中文进行显示
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(
range_='2021',
#图上的名字用中文来显示
daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'),
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
将年份2021隐藏掉
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(
range_='2021',
#图上的名字用中文来显示
daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'),
yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
调整显示的日期范围
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(
#显示日历的区间
range_=['2021-01','2021-12-31'],
#图上的名字用中文来显示
daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'),
yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
或者调成别的时间范围 ,这里我们调节成了到2021年8月1号的
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(
#显示日历的区间
range_=['2021-01','2021-8-1'],
#图上的名字用中文来显示
daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'),
yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
六、词云图
from pyecharts.faker import Faker
from pyecharts.charts import WordCloud
import pyecharts.options as opts
data=[]
for i in range(5):
#将Faker随机选择的主题和其值取出来
#并且打包成一对一对的数据映射
data+=list(zip(Faker.choose(),Faker.values()))
f={
WordCloud()
#添加数据
.add('',data,shape='star')
.set_global_opts(
title_opts=opts.TitleOpts(
#设置主标题
title='词云图',
#设置副标题
subtitle='(五角星形)',
)
)
.render('/Users/Desktop/wordcloud.html')
}
词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选python创意简单小作品。
七、条形图
from pyecharts.charts import Bar
f=(
Bar()
.add_xaxis(['催逝员','薛总司令','王大队长','老冯'])
#直角坐标系的系列名称是只有y轴才有
.add_yaxis('语文',[75,90,81,55])
.add_yaxis('数学',[66,78,95,50])
.render('/Users/Desktop/bar.html')
)
设置标题
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Bar
df=pd.read_csv('/Users/Data(2)/orders.csv')
#因为生成的是series,所以需要转换成list
x=df['category'].tolist()
y1=df['x'].tolist()
y2=df['y'].tolist()
f=(
Bar()
.add_xaxis(x)
.add_yaxis('销售额',y1)
.add_yaxis('利润额',y2)
.set_global_opts(
title_opts=opts.TitleOpts(
#设置主标题
title='销售利润分析',
#设置副标题
subtitle='(2021年)'
)
)
.render('/Users/Desktop/bar.html')
)
设置风格
import pandas as pd
from pyecharts.charts import Bar
df=pd.read_csv('/Users/Data(2)/orders.csv')
#因为生成的是series,所以需要转换成list
x=df['category'].tolist()
y1=df['x'].tolist()
y2=df['y'].tolist()
f=(
#shine
#设置风格是light的配色
Bar(init_opts=opts.InitOpts(theme='light'))
.add_xaxis(x)
.add_yaxis('销售额',y1)
.add_yaxis('利润额',y2)
.set_global_opts(
title_opts=opts.TitleOpts(
#设置主标题
title='销售利润分析',
#设置副标题
subtitle='(2021年)'
)
)
.render('/Users/Desktop/bar.html')
)
工具箱
import pandas as pd
from pyecharts.charts import Bar
df=pd.read_csv('/Users/Data(2)/orders.csv')
#因为生成的是series,所以需要转换成list
x=df['category'].tolist()
y1=df['x'].tolist()
y2=df['y'].tolist()
f=(
#shine
Bar(init_opts=opts.InitOpts(theme='light'))
.add_xaxis(x)
.add_yaxis('销售额',y1)
.add_yaxis('利润额',y2)
.set_global_opts(
#添加工具箱
toolbox_opts=opts.ToolboxOpts(),
title_opts=opts.TitleOpts(
#设置主标题
title='销售利润分析',
#设置副标题
subtitle='(2021年)',
),
)
.render('/Users/Desktop/bar.html')
)
八、折线图
import pandas as pd
from pyecharts.charts import Line
import pyecharts.options as opts
df=pd.read_csv('/Users/Data(2)/sales.csv',header=None)
df
df['Year']=df[1].apply(lambda x: int(x[:4]))
#分组统计不同的店铺的2019年的经营状况
data=df[df['Year']==2019][[2,16,19]].groupby(2).sum()
x=list(data.index)
#销售额
#round保留两位小数
y1=list(data[16].apply(lambda x: round(x,2)))
#利润额
y2=list(data[19].apply(lambda x: round(x,2)))
f = (
#设置主题为shine
Line(init_opts=opts.InitOpts(theme='shine'))
#传入x轴
.add_xaxis(x)
#传入y轴的数据,一共绘制两条折线
#设置折线平滑
.add_yaxis('销售额', y1, is_smooth=True)
.add_yaxis('利润额', y2, is_smooth=True)
#添加主标题和副标题
.set_global_opts(
title_opts=opts.TitleOpts(
title='门店销售额利润额的比较分析',
subtitle='2019年企业经营状况分析'
),
toolbox_opts=opts.ToolboxOpts()
)
.render('/Users/Desktop/line.html')
)
import pandas as pd
from pyecharts.charts import Line
import pyecharts.options as opts
df=pd.read_csv('/Users/Documents/orders.csv')
x=df['category'].tolist()
y1=df['x'].tolist()
y2=df['y'].tolist()
f = (
#设置主题为shine
Line(init_opts=opts.InitOpts(theme='chalk'))
#传入x轴
.add_xaxis(x)
#传入y轴的数据,一共绘制两条折线
#设置折线平滑
.add_yaxis('销售额', y1, is_smooth=True)
.add_yaxis('利润额', y2, is_smooth=True)
#添加主标题和副标题
.set_global_opts(
title_opts=opts.TitleOpts(
title='门店销售额利润额的比较分析',
subtitle='2019年企业经营状况分析'
),
toolbox_opts=opts.ToolboxOpts()
)
.render('/Users/Desktop/test/test4.html')
)
九、散点图
#绘制散点图
from pyecharts.charts import Scatter
import pyecharts.options as opts
import random
x=[random.randint(0,50) for _ in range(50)]
y1=[random.randint(0,50) for _ in range(50)]
y2=[random.randint(0,50) for _ in range(50)]
f={
Scatter()
.add_xaxis(x)
#第一个参数是系列名称
#最后一个参数有没有逗号没有关系
.add_yaxis(
'第一组数据',
y1,
)
.add_yaxis(
'第二组数据',
y2,
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="两组数据对比"
)
)
.render('/Users/Desktop/scatter.html')
}
如何不显示标签和修改点的形状和修改主题风格
#绘制散点图
from pyecharts.charts import Scatter
import pyecharts.options as opts
import random
x=[random.randint(0,50) for _ in range(50)]
y1=[random.randint(0,50) for _ in range(50)]
y2=[random.randint(0,50) for _ in range(50)]
f={
#设置为深夜模式
Scatter(init_opts=opts.InitOpts(theme='dark'))
.add_xaxis(x)
#第一个参数是系列名称
#最后一个参数有没有逗号没有关系
.add_yaxis(
'第一组数据',
y1,
#默认的标记就是circle
symbol='circle',
label_opts=opts.LabelOpts(
#不显示标签
is_show=False
)
)
.add_yaxis(
'第二组数据',
y2,
symbol='square',
label_opts=opts.LabelOpts(
#不显示标签
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="两组数据对比",
)
)
.render('/Users/Desktop/scatter.html')
}
十、涟漪散点图
#绘制涟漪散点图
from pyecharts.charts import EffectScatter
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#手机的相关标签
x=Faker.phones
#随机产生两组数据
y1=Faker.values()
y2=Faker.values()
f=(
EffectScatter()
.add_xaxis(x)
#第一个参数是系列名称
#后面那个参数是销售量
.add_yaxis(
'当月',
y1,
)
.add_yaxis(
'上月',
y2,
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='销售情况对比分析',
subtitle='(2022年11月)'
)
)
.render('/Users/Desktop/scatter.html')
)
设置主题和形状
#绘制涟漪散点图
from pyecharts.charts import EffectScatter
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#手机的相关标签
x=Faker.phones
#随机产生两组数据
y1=Faker.values()
y2=Faker.values()
f=(
#黑板主题风格
EffectScatter(init_opts=opts.InitOpts(theme='chalk'))
.add_xaxis(x)
#第一个参数是系列名称
#后面那个参数是销售量
.add_yaxis(
'当月',
y1,
#设置形状
symbol='triangle'
)
.add_yaxis(
'上月',
y2,
#设置形状
symbol='rect'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='销售情况对比分析',
subtitle='(2022年11月)'
)
)
.render('/Users/Desktop/scatter.html')
)
或者是圆角矩形和菱形
#绘制涟漪散点图
from pyecharts.charts import EffectScatter
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#手机的相关标签
x=Faker.phones
#随机产生两组数据
y1=Faker.values()
y2=Faker.values()
f=(
#黑板主题风格
EffectScatter(init_opts=opts.InitOpts(theme='chalk'))
.add_xaxis(x)
#第一个参数是系列名称
#后面那个参数是销售量
.add_yaxis(
'当月',
y1,
#设置形状
symbol='diamond'
)
.add_yaxis(
'上月',
y2,
#设置形状
#圆角矩形
symbol='roundRect'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='销售情况对比分析',
subtitle='(2022年11月)'
)
)
.render('/Users/Desktop/scatter.html')
)
十一、象形条形图
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
更改形状为圆角矩形
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values,
symbol='roundRect'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
图形重复来达到高度
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values,
symbol='roundRect',
#图形重复
symbol_repeat=True
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
指定叠加的大小
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values,
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
可以切割
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values,
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
将图标横过来
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
#需要将数据和标签也逆置过来
.add_xaxis(cities[::-1])
.add_yaxis('',
values[::-1],
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
不显示数据
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities[::-1])
.add_yaxis('',
values[::-1],
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True,
label_opts=opts.LabelOpts(is_show=False)
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
将做坐标轴隐藏掉
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities[::-1])
.add_yaxis('',
values[::-1],
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True,
label_opts=opts.LabelOpts(is_show=False)
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
),
#x轴不显示标签
xaxis_opts=opts.AxisOpts(
is_show=False
),
#y轴不显示标签
yaxis_opts=opts.AxisOpts(
#刻度不显示
axistick_opts=opts.AxisTickOpts(
is_show=False
),
#将轴线隐藏掉
axisline_opts=opts.AxisOpts(
is_show=False
)
)
)
.render('/Users/Desktop/pictorialbar.html')
)
将图标替换成小人图标
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities[::-1])
.add_yaxis('',
values[::-1],
#image://是协议
#后面写图片的路径
#路径里没有中文,不然可能识别出不来
symbol='image:///Users/Desktop/person.bmp',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True,
label_opts=opts.LabelOpts(is_show=False)
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
),
#x轴不显示标签
xaxis_opts=opts.AxisOpts(
is_show=False
),
#y轴不显示标签
yaxis_opts=opts.AxisOpts(
#刻度不显示
axistick_opts=opts.AxisTickOpts(
is_show=False
),
axisline_opts=opts.AxisOpts(
is_show=False
)
)
)
.render('/Users/Desktop/person.html')
)
十二、K线图
#绘制象牙条形图
from pyecharts.charts import Kline
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
import pandas as pd
df=pd.read_csv('/Users/Documents/stocks.csv',header=None)
df['Date']=pd.to_datetime(df[0])
data=df[(df['Date']>=pd.Timestamp('2022-10-01'))&(df['Date']<=pd.Timestamp('2022-11-16'))]
x=list(data[0])[::-1]
y=[]
#逆序取出来
for i in range(len(x)-1,-1,-1):
y.append([
data.iloc[i,1],
data.iloc[i,4],
data.iloc[i,3],
data.iloc[i,2]
])
f=(
Kline(init_opts=opts.InitOpts(theme='chalk'))
.add_xaxis(x)
.add_yaxis(
#系列名称
'股票价格',
y
)
#设置全局配置
.set_global_opts(
title_opts=opts.TitleOpts(
title="股票价格走势-日K线"
)
)
.render('/Users/Desktop/K_line.html')
)
十三、箱线图
from pyecharts.charts import Boxplot
import pyecharts.options as opts
import pandas as pd
import webbrowser as wb
df=pd.read_csv('/Users/Documents/score.csv',encoding='gbk')
x=list(df['课程'].unique())
y=[]
for c in x:
y.append(df[df['课程']==c]['成绩'])
f=(
Boxplot(init_opts=opts.InitOpts(theme='chalk'))
.add_xaxis(x)
#系列名称为空,然后数据为y,让preprare_data为我们处理分位数
.add_yaxis('',Boxplot.prepare_data(y))
#转置
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='各科成绩分布情况',
pos_left='center'
)
)
.render('/Users/Desktop/boxplot.html')
)
十四、饼图
from pyecharts.faker import Faker
from pyecharts.charts import Pie
import pyecharts.options as opts
import pandas as pd
x=Faker.fruits
y=Faker.values()
f=(
Pie(init_opts=opts.InitOpts(theme='chalk'))
.add(
'水果',
#只能传入列表
list(zip(x,y)),
)
.set_colors(['red','yellow','orange','green','cyan','blue','purple'])
.set_series_opts(
#设置标签
label_opts=opts.LabelOpts(
formatter='{b}:{c}箱,占{d}%'
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='水果销量分析',
subtitle='(2022年10月)'
)
)
.render('/Users/Desktop/pie.html')
)
十五、玫瑰图
from pyecharts.faker import Faker
from pyecharts.charts import Pie
import pyecharts.options as opts
import pandas as pd
x=Faker.clothes
y=Faker.values()
y.sort()
f=(
Pie(init_opts=opts.InitOpts(theme='chalk'))
.add(
'服饰',
#只能传入列表
list(zip(x,y)),
#按照区域面积来实现
rosetype='area'
)
.set_colors(['red','yellow','orange','green','cyan','blue','purple'])
.set_series_opts(
#设置标签
label_opts=opts.LabelOpts(
formatter='{b}:{c},占{d}%'
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='主要服饰销量分析',
subtitle='(2022年10月)'
)
)
.render('/Users/Desktop/flower.html')
)
将标签设置为竖直的
from pyecharts.faker import Faker
from pyecharts.charts import Pie
import pyecharts.options as opts
import pandas as pd
x=Faker.clothes
y=Faker.values()
y.sort()
f=(
Pie(init_opts=opts.InitOpts(theme='chalk'))
.add(
'服饰',
#只能传入列表
list(zip(x,y)),
#按照区域面积来实现
rosetype='area',
#在水平50%的位置,也就是居中,然后向下约为55%的位置
center=('50%','55%'),
)
.set_colors(['red','yellow','orange','green','cyan','blue','purple'])
.set_series_opts(
#设置标签
label_opts=opts.LabelOpts(
formatter='{b}:{c},占{d}%'
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='主要服饰销量分析',
subtitle='(2022年10月)',
pos_left='center',
pos_top='5%'
),
legend_opts=opts.LegendOpts(
#将水平的标签改成竖直的,默认是将标签放在中间的
orient='vertical',
#从顶部往下移动10%
pos_top='10%',
pos_right='right',
)
)
.render('/Users/Desktop/flower.html')
)
将花的花心置空
from pyecharts.faker import Faker
from pyecharts.charts import Pie
import pyecharts.options as opts
import pandas as pd
x=Faker.clothes
y=Faker.values()
y.sort()
f=(
Pie(init_opts=opts.InitOpts(theme='chalk'))
.add(
'服饰',
#只能传入列表
list(zip(x,y)),
#需要挖掉的半径
radius=['15%','50%'],
#按照区域面积来实现
rosetype='area',
#在水平50%的位置,也就是居中,然后向下约为55%的位置
center=('50%','55%'),
)
.set_colors(['red','yellow','orange','green','cyan','blue','purple'])
.set_series_opts(
#设置标签
label_opts=opts.LabelOpts(
formatter='{b}:{c},占{d}%'
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='主要服饰销量分析',
subtitle='(2022年10月)',
pos_left='center',
pos_top='5%'
),
legend_opts=opts.LegendOpts(
#将水平的标签改成竖直的,默认是将标签放在中间的
orient='vertical',
#从顶部往下移动10%
pos_top='10%',
pos_right='right',
)
)
.render('/Users/Desktop/flower.html')
)
十六、雷达图
from pyecharts.faker import Faker
from pyecharts.charts import Radar
import pyecharts.options as opts
import pandas as pd
df=pd.read_csv('/Users/Documents/sales.csv',header=None,usecols=[11,16,19]).groupby(11).sum()
rii=[]
#设置雷达图的轴线和标签
for i in df.index:
rii.append(opts.RadarIndicatorItem(i,max_=4600000))
#销售额
data1=list(df[16])
#利润额
data2=list(df[19])
f=(
Radar()
#绘制的模式(框架)
#设置位置,左右居中,从上往下55%的位置
.add_schema(rii,center=['50%','55%'])
.add(
'销售额',
[data1],
color='blue',
symbol='circle',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
.add(
'利润额',
[data2],
color='red',
symbol='square',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
#将标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='区域销售情况分析',
pos_left='center'
),
#将图例往下移30个像素
legend_opts=opts.LegendOpts(pos_top=30)
)
.render('/Users/Desktop/radar.html')
)
将图例放在右侧
from pyecharts.faker import Faker
from pyecharts.charts import Radar
import pyecharts.options as opts
import pandas as pd
df=pd.read_csv('/Users/sales.csv',header=None,usecols=[11,16,19]).groupby(11).sum()
rii=[]
#设置雷达图的轴线和标签
for i in df.index:
rii.append(opts.RadarIndicatorItem(i,max_=4600000))
#销售额
data1=list(df[16])
#利润额
data2=list(df[19])
f=(
Radar()
#绘制的模式(框架)
#设置位置,左右居中,从上往下55%的位置
.add_schema(rii,center=['50%','55%'])
.add(
'销售额',
[data1],
color='blue',
symbol='circle',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
.add(
'利润额',
[data2],
color='red',
symbol='square',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
#将标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='区域销售情况分析',
pos_left='center'
),
#将图例往下移30个像素
legend_opts=opts.LegendOpts(
pos_top='5%',
pos_right='right',
orient='vertical',
),
)
.render('/Users/Desktop/radar.html')
)
将图例放在底部
from pyecharts.faker import Faker
from pyecharts.charts import Radar
import pyecharts.options as opts
import pandas as pd
df=pd.read_csv('/Users/sales.csv',header=None,usecols=[11,16,19]).groupby(11).sum()
rii=[]
#设置雷达图的轴线和标签
for i in df.index:
rii.append(opts.RadarIndicatorItem(i,max_=4600000))
#销售额
data1=list(df[16])
#利润额
data2=list(df[19])
f=(
Radar()
#绘制的模式(框架)
#设置位置,左右居中,从上往下55%的位置
.add_schema(rii,center=['50%','50%'])
.add(
'销售额',
[data1],
color='blue',
symbol='circle',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
.add(
'利润额',
[data2],
color='red',
symbol='square',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
#将标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='区域销售情况分析',
pos_left='center'
),
#将图例往下移30个像素
legend_opts=opts.LegendOpts(
pos_bottom='bottom',
pos_right='center',
orient='horizontal',
),
)
.render('/Users/Desktop/radar.html')
)
十七、极坐标散点图
import random
from pyecharts.charts import Polar
import pyecharts.options as opts
import webbrowser as wb
#极坐标上的数据和角度
data=[(i,random.randint(1,100)) for i in range(50)]
f=(
Polar()
.add('',
data,
#普通的散点
type_='scatter'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='极坐标散点图'
)
)
.render('/Users/Desktop/polar.html')
)
添加涟漪特效
import random
from pyecharts.charts import Polar
import pyecharts.options as opts
import webbrowser as wb
#极坐标上的数据和角度
data=[(i,random.randint(1,100)) for i in range(50)]
f=(
Polar()
.add('',
data,
#普通的散点
type_='effectScatter',
#添加特效
effect_opts=opts.EffectOpts(
#设置比例尺
scale=9
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='极坐标散点图'
)
)
.render('/Users/Desktop/polar1.html')
)
更改主题
import random
from pyecharts.charts import Polar
import pyecharts.options as opts
import webbrowser as wb
#极坐标上的数据和角度
data=[(i,random.randint(1,100)) for i in range(50)]
f=(
Polar(init_opts=opts.InitOpts(theme='chalk'))
.add('',
data,
#普通的散点
type_='effectScatter',
#添加特效
effect_opts=opts.EffectOpts(
#设置比例尺
scale=9
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='极坐标散点图'
)
)
.render('/Users/Desktop/polar1.html')
)
十八、热力地图(地图热力图)
#热力地图
from pyecharts.charts import Map
import pyecharts.options as opts
import webbrowser as wb
import random
data=dict(新疆=165,西藏=122.84,内蒙古=118.3,青海=72.12,四川=48.5,黑龙江=45.46,甘肃=45.4,云南=39.4)
f=(
Map()
#第一个参数是系列名称,我们这里没有,就空着
#第二个参数是数据
.add('',
#将键和值取出来,生成一个对应的元组,然后转换成一个列表
list(data.items()),
'china'
)
#将标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='全国面积最大的8个省区'
),
#添加可视化的颜色
visualmap_opts=opts.VisualMapOpts(
min_=39.4,
max_=165
)
)
.render('/Users/Desktop/map.html')
)
十九、全球各国的热力地图
from pyecharts.charts import Map
import pyecharts.options as opts
import webbrowser as wb
import random
countries=['United states','China','Japen','Germany','United kindom']
gdps=[22.94,16.86,5.1,4.23,3.11]
data=list(zip(countries,gdps))
f=(
Map()
.add('',data,'world')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="2021年全球GDP前五的国家",
subtitle='(单位:万亿美元)'
)
)
.render('/Users/Desktop/theworld.html')
)
给指定的国家添加颜色
from pyecharts.charts import Map
import pyecharts.options as opts
import webbrowser as wb
import random
countries=['United States','China','Japan','Germany','United Kingdom']
gdps=[22.94,16.86,5.1,4.23,3.11]
data=list(zip(countries,gdps))
f=(
Map()
.add('',data,'world')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="2021年全球GDP前五的国家",
subtitle='(单位:万亿美元)'
),
visualmap_opts=opts.VisualMapOpts(
min_=3.11,
max_=22.94
)
)
.render('/Users/Desktop/theworld.html')
)
二十、省份的热力图
from pyecharts.charts import Map
import pyecharts.options as opts
data=[('杭州市',300),('宁波市',200),('温州市',100)]
f=(
Map()
.add('',data,'浙江')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="浙江省",
),
visualmap_opts=opts.VisualMapOpts(
min_=100,
max_=300
)
)
.render('/Users/Desktop/zhejiang.html')
)
二十一、全国的某些城市的热力图
from pyecharts.charts import Map
import pyecharts.options as opts
data=[('北京',1),('上海',2),('广州',3),('深圳',4),('杭州',5)]
f=(
Map()
.add('',data,'china-cities')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="全国各市",
),
visualmap_opts=opts.VisualMapOpts(
min_=1,
max_=6
)
)
.render('/Users/Desktop/cities.html')
)
二十二、区县的地图
from pyecharts.charts import Map
import pyecharts.options as opts
data=[('西湖区',1),('拱墅区',2),('余杭区',1),('桐庐县',4),('建德市',5)]
f=(
Map()
.add('',data,'杭州')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="杭州各区县市",
),
visualmap_opts=opts.VisualMapOpts(
min_=1,
max_=6
)
)
.render('/Users/Desktop/local.html')
)
二十三、地理坐标热力图
from pyecharts.charts import Geo
import pyecharts.options as opts
from pyecharts.faker import Faker
data=list(zip(Faker.provinces,Faker.values()))
f=(
Geo()
.add_schema('china')
.add('',data)
#设置系列的参数
.set_series_opts(
#热力图
type='heatmap'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='全国各市'
),
visualmap_opts=opts.VisualMapOpts(
min_=0,
max_=100
)
)
.render('/Users/Desktop/cities.html')
)
二十四、热力散点图
from pyecharts.charts import Geo
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[('北京',1),('上海',2),('广州',3),('深圳',4),('杭州',5),('阿克苏',6)]
f=(
Geo()
#地图为中国地图
.add_schema('china')
.add('',data)
#设置系列的参数
.set_series_opts(
#热力图
type='scatter',
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='全国各市'
),
visualmap_opts=opts.VisualMapOpts(
min_=0,
max_=6
)
)
.render('/Users/Desktop/cities2.html')
)
按照大小绘制散点
from pyecharts.charts import Geo
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[('北京',1),('上海',2),('广州',3),('深圳',4),('杭州',5),('阿克苏',6)]
f=(
Geo()
#地图为中国地图
.add_schema('china')
.add('',data)
#设置系列的参数
.set_series_opts(
#热力图
type='scatter',
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='全国各市'
),
visualmap_opts=opts.VisualMapOpts(
min_=0,
max_=6,
type_='size'
)
)
.render('/Users/Desktop/cities2.html')
)
二十五、地理连线图
from pyecharts.charts import Geo
import pyecharts.options as opts
data=[('北京',10),('上海',20),('广州',30),('深圳',40),('杭州',50),('阿克苏',60)]
f=(
Geo()
#使用什么样的地图
.add_schema('china')
#添加数据
#第一个参数为系列标题,空着就是没有
.add('',
data,
type_='effectScatter',
)
.add(
'杭州出发的航班',[('杭州','北京'),('杭州','广州'),('杭州','深圳'),('杭州','阿克苏')],
#设置成连线的形式
type_='lines',
#设置线的弯曲程度
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="几个城市"
)
)
.render('/Users/Desktop/geo.html')
)
调整参数,添加特效
from pyecharts.charts import Geo
import pyecharts.options as opts
data=[('北京',10),('上海',20),('广州',30),('深圳',40),('杭州',50),('阿克苏',60)]
f=(
Geo()
#使用什么样的地图
.add_schema('china')
#添加数据
#第一个参数为系列标题,空着就是没有
.add('',
data,
type_='effectScatter',
)
.add(
'杭州出发的航班',[('杭州','北京'),('杭州','广州'),('杭州','深圳'),('杭州','阿克苏')],
#设置成连线的形式
type_='lines',
#设置线的弯曲程度
linestyle_opts=opts.LineStyleOpts(
curve=0.2
),
effect_opts=opts.EffectOpts(
symbol_size=9,
color='blue'
)
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="几个城市"
),
visualmap_opts=opts.VisualMapOpts(
min_=10,
max_=60
)
)
.render('/Users/Desktop/geo.html')
)
二十六、太阳图
from pyecharts.charts import Sunburst
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
#下面是直接用faker中的数据
opts.SunburstItem(
name='水果',
children=[
#将我们的Faker取出来的随机组合和我们的水果使用zip函数组成一个元组
opts.SunburstItem(value,name) for(value,name)
in zip(Faker.values(),Faker.fruits)
],
#将这一个项目的主题设置成红色
itemstyle_opts=opts.ItemStyleOpts(
color='red'
)
),
opts.SunburstItem(
name='手机',
children=[
opts.SunburstItem(value,name) for(value,name)
in zip(Faker.values(),Faker.phones)
],
itemstyle_opts=opts.ItemStyleOpts(
color='yellow'
)
),
opts.SunburstItem(
name='服饰',
children=[
opts.SunburstItem(value,name) for(value,name)
in zip(Faker.values(),Faker.clothes)
],
itemstyle_opts=opts.ItemStyleOpts(
color='blue'
)
),
#这是我们自己写的数据
#如果我们自己写数据的话,我们需要将我们的数据一层一层套进去
opts.SunburstItem(
500,
name='其他',
children=[
opts.SunburstItem(
400,
name='食品',
children=[
opts.SunburstItem(
200,
'面包'
),
opts.SunburstItem(
100,
'大米'
)
]
),
opts.SunburstItem(
30,
'饮料',
),
opts.SunburstItem(
20,
'白酒'
)
]
)
]
f=(
Sunburst()
#设置里面挖掉多少,
.add('',data,radius=['20%','100%'])
.set_global_opts(
title_opts=opts.TitleOpts(
title='销售量品类层次分析',
subtitle='(2022年11月)',
pos_left='center'
)
)
.render('/Users/Desktop/sun.html')
)
二十七、树形图
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
.add('',data,)
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
调整我们的树的方向
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
#设置orient='BT'就可以让树从底部往上面生长
.add('',data,orient='BT')
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
从上往下长
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
#设置orient='BT'就可以让树从底部往上面生长
.add('',data,orient='TB')
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
从右往左
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
#设置orient='BT'就可以让树从底部往上面生长
.add('',data,orient='RL')
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
辐射状的树
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
#设置orient='BT'就可以让树从底部往上面生长
.add('',data,layout='radial')
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
二十八、网络图的绘制
#网络图
from pyecharts.charts import Graph
import pyecharts.options as opts
from pyecharts.faker import Faker
nodes=[
opts.GraphNode(name='中国',symbol_size=60),
opts.GraphNode(name='美国',symbol_size=50),
opts.GraphNode(name='俄罗斯',symbol_size=40),
opts.GraphNode(name='英国',symbol_size=30),
opts.GraphNode(name='德国',symbol_size=20),
opts.GraphNode(name='日本',symbol_size=10),
]
links=[]
for (i,nodeSource) in enumerate(nodes):
for(j,nodetarget) in enumerate(nodes):
if i<j:
#两两之间建立链接
links.append(opts.GraphLink(source=nodeSource.get("name"),
target=nodetarget.get("name")))
f=(
Graph()
#分别为类别名称结点,链接和排斥力
.add('h',nodes,links,repulsion=3000)
.set_global_opts(
title_opts=opts.TitleOpts(
title='网络图-基本'
)
)
.render('/Users/Desktop/net.html')
)
二十九、辐射状的网络图
from pyecharts.charts import Graph
import pyecharts.options as opts
nodes=[
opts.GraphNode(name='中国',symbol_size=60),
opts.GraphNode(name='美国',symbol_size=50),
opts.GraphNode(name='俄罗斯',symbol_size=40),
opts.GraphNode(name='英国',symbol_size=30),
opts.GraphNode(name='德国',symbol_size=20),
opts.GraphNode(name='日本',symbol_size=10),
]
links=[]
for (i,nodeSource) in enumerate(nodes):
for(j,nodetarget) in enumerate(nodes):
if i<j:
#两两之间建立链接
links.append(opts.GraphLink(source=nodeSource.get("name"),
target=nodetarget.get("name")))
f=(
Graph()
.add('',
nodes,
links,
#辐射状的网络
layout='circular',
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='辐射状的网络图'
)
)
.render('/Users/Desktop/net1.html')
)
from pyecharts.charts import Graph
import pyecharts.options as opts
nodes=[
opts.GraphNode(name='中国',symbol_size=60),
opts.GraphNode(name='美国',symbol_size=50),
opts.GraphNode(name='俄罗斯',symbol_size=40),
opts.GraphNode(name='英国',symbol_size=30),
opts.GraphNode(name='德国',symbol_size=20),
opts.GraphNode(name='日本',symbol_size=10),
]
links=[]
for (i,nodeSource) in enumerate(nodes):
for(j,nodetarget) in enumerate(nodes):
if i<j:
#两两之间建立链接
links.append(opts.GraphLink(source=nodeSource.get("name"),
target=nodetarget.get("name")))
f=(
Graph()
.add('',
nodes,
links,
#辐射状的网络
layout='circular',
is_rotate_label=True,
linestyle_opts=opts.LineStyleOpts(
#设置线的颜色和发出的结点的颜色相同
#color=nodeSource,
color='blue',
curve=0.2
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='辐射状的网络图'
)
)
.render('/Users/Desktop/net1.html')
)
三十、3D条形图
#3D条形图
from pyecharts.charts import Bar3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#需要是一个三维的元组
#x,y分别是一天当中的每一个小时和一周七天
#randint的取值范围是左闭右也闭的区间
data=[(x,y,random.randint(0,10))
for x in range(24)
for y in range(7)]
f=(
Bar3D()
.add('',
data,
#X轴的配置
xaxis3d_opts=opts.Axis3DOpts(
#指定相关的刻度
Faker.clock,
#这是一个分类
type_='category',
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D条形图-基本',
)
)
.render('/Users/Desktop/3Dplot.html')
)
根据柱子的高度设置不同的颜色
#3D条形图
from pyecharts.charts import Bar3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#需要是一个三维的元组
#x,y分别是一天当中的每一个小时和一周七天
#randint的取值范围是左闭右也闭的区间
data=[(x,y,random.randint(0,10))
for x in range(24)
for y in range(7)]
f=(
Bar3D()
.add('',
data,
#X轴的配置
xaxis3d_opts=opts.Axis3DOpts(
#指定相关的刻度
Faker.clock,
#这是一个分类
type_='category',
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D条形图-基本',
),
visualmap_opts=opts.VisualMapOpts(
max_=10,
)
)
.render('/Users/Desktop/3Dplot.html')
)
三十一、3D条形图-堆叠
from pyecharts.charts import Bar3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import random
def getData():
data = []
for x in range(10):
for y in range(10):
z=random.randint(0,5)
data.append([x,y,z])
return data
x = y =list(range(10))
b=Bar3D()
for _ in range(3):
b.add('',
getData(),
#分别指定三个坐标轴的刻度和类型
xaxis3d_opts=opts.Axis3DOpts(x,type_='value'),
yaxis3d_opts=opts.Axis3DOpts(y,type_='value'),
zaxis3d_opts=opts.Axis3DOpts(type_='value'),
)
#设置是否是堆叠的
b.set_series_opts(stack='stack')
b.set_global_opts(
title_opts=opts.TitleOpts(
title="3D条形图-堆叠",
pos_left='center',
)
)
b.render('/Users/Desktop/3Dplo2t.html')
添加光照模型,让我们的3D堆叠图的每一个面接受光照
from pyecharts.charts import Bar3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import random
def getData():
data = []
for x in range(10):
for y in range(10):
z=random.randint(0,5)
data.append([x,y,z])
return data
x = y =list(range(10))
b=Bar3D()
for _ in range(3):
b.add('',
getData(),
#分别指定三个坐标轴的刻度和类型
xaxis3d_opts=opts.Axis3DOpts(x,type_='value'),
yaxis3d_opts=opts.Axis3DOpts(y,type_='value'),
zaxis3d_opts=opts.Axis3DOpts(type_='value'),
#设置成为光照模型
shading='lambert',
)
#设置是否是堆叠的
b.set_series_opts(stack='stack')
b.set_global_opts(
title_opts=opts.TitleOpts(
title="3D条形图-堆叠",
pos_left='center',
)
)
b.render('/Users/Desktop/3Dplo2t.html')
三十二、3D折线图
from pyecharts.charts import Line3D
from pyecharts import options as opts
from pyecharts.faker import Faker
import math
data=[]
for t in range(25000):
t=t/1000
x=(1+0.25*math.cos(75*t))*math.cos(t)
y=(1+0.25*math.cos(75*t))*math.sin(t)
z=(t+0.2*math.sin(75+t))
data.append([x,y,z])
f=(
Line3D()
.add(
#系列名称是空的
'',
data,
xaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
yaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D折线图-旋转的弹簧',
)
)
.render('/Users/Desktop/3Dplot3.html')
)
设置相关的视觉映射
from pyecharts.charts import Line3D
from pyecharts import options as opts
from pyecharts.faker import Faker
import math
data=[]
for t in range(25000):
t=t/1000
x=(1+0.25*math.cos(75*t))*math.cos(t)
y=(1+0.25*math.cos(75*t))*math.sin(t)
z=(t+0.2*math.sin(75+t))
data.append([x,y,z])
f=(
Line3D()
.add(
#系列名称是空的
'',
data,
xaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
yaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D折线图-旋转的弹簧',
),
visualmap_opts=opts.VisualMapOpts(
max_=30,
)
)
.render('/Users/Desktop/3Dplot3.html')
)
使用Faker中的配色方案
from pyecharts.charts import Line3D
from pyecharts import options as opts
from pyecharts.faker import Faker
import math
data=[]
for t in range(25000):
t=t/1000
x=(1+0.25*math.cos(75*t))*math.cos(t)
y=(1+0.25*math.cos(75*t))*math.sin(t)
z=(t+0.2*math.sin(75+t))
data.append([x,y,z])
f=(
Line3D()
.add(
#系列名称是空的
'',
data,
xaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
yaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D折线图-旋转的弹簧',
),
visualmap_opts=opts.VisualMapOpts(
max_=30,
range_color=Faker.visual_color,
)
)
.render('/Users/Desktop/3Dplot3.html')
)
让这个弹簧真正地旋转起来
from pyecharts.charts import Line3D
from pyecharts import options as opts
from pyecharts.faker import Faker
import math
data=[]
for t in range(25000):
t=t/1000
x=(1+0.25*math.cos(75*t))*math.cos(t)
y=(1+0.25*math.cos(75*t))*math.sin(t)
z=(t+0.2*math.sin(75+t))
data.append([x,y,z])
f=(
Line3D()
.add(
#系列名称是空的
'',
data,
xaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
yaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
grid3d_opts=opts.Grid3DOpts(
width=100,
depth=100,
is_rotate=True,
rotate_speed=150,
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D折线图-旋转的弹簧',
),
visualmap_opts=opts.VisualMapOpts(
max_=30,
range_color=Faker.visual_color,
)
)
.render('/Users/Desktop/3Dplot3.html')
)
三十三、3D散点图
from pyecharts.charts import Scatter3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
data=[(x,y,random.randint(0,10))for x in range(24) for y in range(7)]
f=(
Scatter3D()
.add('',
data,
xaxis3d_opts=opts.Axis3DOpts(
Faker.clock,
type_='category'
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value'
),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D散点图',
pos_left='center'
)
).render('/Users/Desktop/net1.html')
)
添加视觉效果
from pyecharts.charts import Scatter3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
data=[(x,y,random.randint(0,10))for x in range(24) for y in range(7)]
f=(
Scatter3D()
.add('',
data,
xaxis3d_opts=opts.Axis3DOpts(
Faker.clock,
type_='category'
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value'
),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D散点图',
pos_left='center'
),
visualmap_opts=opts.VisualMapOpts(
max_=10,
)
).render('/Users/Desktop/net1.html')
)
根据大小显示
from pyecharts.charts import Scatter3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
data=[(x,y,random.randint(0,10))for x in range(24) for y in range(7)]
f=(
Scatter3D()
.add('',
data,
xaxis3d_opts=opts.Axis3DOpts(
Faker.clock,
type_='category'
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value'
),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D散点图',
pos_left='center'
),
visualmap_opts=opts.VisualMapOpts(
max_=10,
type_='size'
)
).render('/Users/Desktop/net1.html')
)
三十四、双轴坐标图
from pyecharts.charts import Line,Bar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
import pandas as pd
df=pd.read_csv(r'/Users/stocks.csv',header=None)
df['Date']=pd.to_datetime(df[0])
df[6]=df[6]/10000
data=df[(df['Date']>=pd.Timestamp('2022-12-01'))
& (df['Date']<=pd.Timestamp('2022-12-15'))]
x=list(data[0])[::-1]
y1=list(data[5])[::-1]
y2=list(data[6])[::-1]
l=(
Line(init_opts=opts.InitOpts(theme='light'))
.add_xaxis(x)
.add_yaxis('股票价格',y1)
#扩展坐标轴
.extend_axis(
yaxis=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(
#设置标签的格式
formatter='{value}万元'
)
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='股票价格与交易额分析'
),
xaxis_opts=opts.AxisOpts(
#旋转的角度
axislabel_opts=opts.LabelOpts(
rotate=30,
),
),
yaxis_opts=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(
formatter='{value}元'
),
min_=29000,
max_=30000
)
)
)
b = (
Bar()
.add_xaxis(x)
.add_yaxis('交易额', y2, yaxis_index=1)
)
l.overlap(b)
l.render('/Users/Desktop/double.html')
三十五、顺序多图
from pyecharts.charts import Bar, Line, Pie, Map, Page
from pyecharts.faker import Faker
import pyecharts.options as opts
import webbrowser as wb
x=Faker.provinces
y=Faker.values()
data=list(zip(x,y))
b = (
Bar(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
l = (
Line(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
p = (
Pie(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data)
)
m = (
Map(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data, maptype='china')
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=min(y),
max_=max(y)
)
)
)
f = (
Page(layout=Page.DraggablePageLayout) # Page.SimplePageLayout
.add(b, l, p, m)
.render('/Users/Desktop/page.html')
)
from pyecharts.charts import Bar, Line, Pie, Map, Page
from pyecharts.faker import Faker
import pyecharts.options as opts
import webbrowser as wb
x=Faker.provinces
y=Faker.values()
data=list(zip(x,y))
b = (
Bar(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
l = (
Line(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
p = (
Pie(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data)
)
m = (
Map(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data, maptype='china')
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=min(y),
max_=max(y)
)
)
)
f = (
Page(layout=Page.SimplePageLayout) # Page.SimplePageLayout
.add(b, l, p, m)
.render('/Users/Desktop/page2.html')
)
可拖动每一张子图的版本
from pyecharts.charts import Bar, Line, Pie, Map, Page
from pyecharts.faker import Faker
import pyecharts.options as opts
import webbrowser as wb
x=Faker.provinces
y=Faker.values()
data=list(zip(x,y))
b = (
Bar(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
l = (
Line(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
p = (
Pie(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data)
)
m = (
Map(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data, maptype='china')
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=min(y),
max_=max(y)
)
)
)
f = (
Page(layout=Page.DraggablePageLayout) # Page.SimplePageLayout
.add(b, l, p, m)
.render('/Users/Desktop/page3.html')
)
三十六、时间线图
from pyecharts.charts import Bar,Timeline
from pyecharts.faker import Faker
import pyecharts.options as opts
import webbrowser as wb
x = Faker.provinces
y0 = Faker.values()
y1 = Faker.values()
tl = Timeline()
tl.add_schema(play_interval=200)
for i in range(1972, 2022):
y = [round(a*(2021-i)/49+b*(i-1972)/49,1)
for (a, b) in zip(y0, y1)]
z = sorted(zip(x, y), key=lambda a: a[1])
(xi, yi) = zip(*z)
bar = (
Bar()
.add_xaxis(xi)
.add_yaxis('',
yi,
color='blue',
label_opts=opts.LabelOpts(
position='right'
)
)
#转置坐标轴,让顶部是大的,底部是小的。
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title=f'{i}年',
pos_left='center'
)
)
)
tl.add(bar, f'{i}')
tl.render('/Users/Desktop/develop.html')