pyecharts的浅浅学习
好吧,其实不太难,主要是参数太多了
模板太多了,不过那样子可以直接拿模板
废话少说直接上代码,解释都在注释里面了,没时间扣出来了,每个图都是实操过的,而且都明白原理和代码的含义
and有两种办法创建图例:链式和普通,链式比较简洁
文章目录
geo式
from pyecharts.globals import GeoType#!!!!!
city = '杭州'
g = Geo()
g.add_schema(maptype=city)# 先要有一大的框架
g.add_coordinate('杭州师范大学仓前校区',120.0109472358, 30.2910373720)#注意这里要求经度在前维度在后
g.add_coordinate('萧山城厢街道',120.2740081170, 30.1605364542)
# 先要定点,不然,系统不知道你这个地方在哪里
data_pair = [('杭州师范大学仓前校区', 100),('萧山城厢街道', 500),("杭州",50)]
# 代表整个杭州,所以就会有酱紫的东西
g.add('', data_pair,type_=GeoType.EFFECT_SCATTER, symbol_size=20)
# 变成了涟漪状的!!!!
# is_piecewise 是否自定义分段, 变为true 才能生效
g.set_global_opts(
visualmap_opts=opts.VisualMapOpts(is_piecewise=True,max_=800),#注意默认max_
title_opts=opts.TitleOpts(title="{}-店铺分布".format(city)),
)
g.render('杭州.html')
输出
瑞士的地图
from pyecharts.charts import Geo
import pyecharts.options as opts
geo = (
Geo()
.add_schema(maptype="瑞士")
.set_global_opts(title_opts=opts.TitleOpts(title="瑞士"))
.render("瑞士.html")
)
输出
地图式
from pyecharts.faker import Faker
from pyecharts import options as opts # 导入模块
from pyecharts.charts import Map # 导入模块
# 就三参数重要
# .add(标签,数据,地图)
# 数据可以一口气加入多个
# 也可以加入多次
# 但是记住他要对应x,y
customMap = (
Map()
.add("商家A", # 标签
[list(z) for z in zip(Faker.provinces, Faker.days_values)], # 数据项
# 数据and在地图上你是要写什么
"china" # 选择什么地图
)
.set_series_opts(
label_opts=opts.LabelOpts( # 设置标签配置项
is_show=False # 设置不显示Label,就是地图上面的种种东西,比如说省份
)
)
# 有很多的选项,ok慢慢来
.set_global_opts( # 设置全局项
title_opts=opts.TitleOpts( # 设置标题配置项
title="中国地图", # 设置标题名称
pos_left="center" # 设置标题居中!!!!
),
legend_opts=opts.LegendOpts( # 设置图例配置项
pos_right="right", # 设置为水平居右
pos_bottom="bottom" # 设置为垂直居下
),
visualmap_opts=opts.VisualMapOpts(
# 视觉映射所以就是视觉上的东西,所以就是那种图示什么的
# colorful
is_piecewise=True, # 设置为分段
pieces=[ # 自定义分段名称和颜色
{"value": "1", "label": "A", "color": "red"},
{"value": "2", "label": "B", "color": "orange"},
{"value": "3", "label": "C", "color": "yellow"},
{"value": "4", "label": "D", "color": "green"},
{"value": "5", "label": "E", "color": "blue"},
{"value": "6", "label": "F", "color": "cyan"},
{"value": "7", "label": "G", "color": "purple"}
]
)
)
)
customMap.render("地图式.html")
输出
饼状图
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
c = (
Pie()
.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
# 只要输入数值就可以了,因为系统会制动分析百分比
.set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
# 每个数据的label的表现形式化
.render("饼状图.html")
)
输出
词云图
import pyecharts.options as opts
from pyecharts.charts import WordCloud
data = [
。。。。。。。。。。。。省略掉了
]
原理
系统自动根据里面的占比进行排列。。。
very easy
(
WordCloud()
.add(series_name="热点分析", data_pair=data, word_size_range=[6, 66])
.set_global_opts(
title_opts=opts.TitleOpts(
title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
),
tooltip_opts=opts.TooltipOpts(is_show=True),
)
.render("词云图.html")
)
输出
热力图
import random
from pyecharts import options as opts
from pyecharts.charts import HeatMap
from pyecharts.faker import Faker
value = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]
# 建立网格图
c = (
HeatMap()
.add_xaxis(Faker.clock)# x轴的刻度是时间
.add_yaxis("series0", Faker.week, value)
# 名字 y轴的刻度是星期 填入数据
# 都是y轴进行数据的录入呀!!!因为x轴已经固定下来了,你只要数据的数量合适,你就可以填进去了
.set_global_opts(
title_opts=opts.TitleOpts(title="HeatMap-基本示例"),
visualmap_opts=opts.VisualMapOpts(),
)
.render("热力图.html")
)
输出
散点图
from pyecharts.charts import Scatter
from pyecharts.faker import Faker
import pyecharts.options as opts
c = (
Scatter()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())# faker7个数据
.add_yaxis("商家B", Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title="Scatter-VisualMap(Size)"),
visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),
# 图例。。。
)
.render("散点图.html")
)
输出
动态散点图
# 改进了一下,这次要x,y来搞那个坐标
from pyecharts import options as opts
from pyecharts.charts import EffectScatter
from pyecharts.faker import Faker
from pyecharts.globals import SymbolType
c = (
EffectScatter()
.add_xaxis(Faker.choose())
.add_yaxis("", Faker.values(), symbol=SymbolType.ARROW)
# 用y来表示那个图例 箭头
.set_global_opts(title_opts=opts.TitleOpts(title="EffectScatter-不同Symbol"))
.set_global_opts(
xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
)# 显示网格线!!!
.render("动态散点图.html")
)
输出
树状图!!!!
from pyecharts import options as opts
from pyecharts.charts import Tree
# 还是像那个 旭日图一样 一个个进行层叠
# 比较耗时间而已
data = [
{
"children": [
{"name": "中山"},
{
"children": [{"children": [{"name": "深圳技术大学,这样好吗。。。"}], "name": "深圳大学"}, {"name": "南方科技大学"}],
"name": "深圳",
},
{
"children": [
{"children": [{"name": "广州大学"}, {"name": "中山大学"}], "name": "某区"},
{"name": "白云区"},
],
"name": "广州",
},
],
"name": "广东",
}
]
c = (
Tree()
.add("", data)
.set_global_opts(title_opts=opts.TitleOpts(title="Tree-基本示例"))
.render("树状图.html")
)
输出
箱型图
from pyecharts import options as opts
from pyecharts.charts import Boxplot
v1 = [
[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880, 1000, 980],
[960, 940, 960, 940, 880, 800, 850, 880, 900, 840, 830, 790],
]
v2 = [
[890, 810, 810, 820, 800, 770, 760, 740, 750, 760, 910, 920],
[890, 840, 780, 810, 760, 810, 790, 810, 820, 850, 870, 870],
]
c = Boxplot()
c.add_xaxis(["expr1", "expr2"])# 两列数据
c.add_yaxis("A", c.prepare_data(v1))
# 数据比较集中地时候就会变成一个箱子!!!!!
c.add_yaxis("B", c.prepare_data(v2))
c.set_global_opts(title_opts=opts.TitleOpts(title="BoxPlot-基本示例"))
c.render("箱型图.html")
输出
旭日图,也不太难,就是费眼睛和时间
from pyecharts.charts import Sunburst
from pyecharts import options as opts
# 他的孩子,一类继承一类
# 就是一个接着一个,easy
data = [
opts.SunburstItem(
name="Grandpa",
children=[
opts.SunburstItem(
name="Uncle Leo",
value=15,
children=[
opts.SunburstItem(name="Cousin Jack", value=2),
opts.SunburstItem(
name="Cousin Mary",
value=5,
children=[opts.SunburstItem(name="Jackson", value=2)],
),
opts.SunburstItem(name="Cousin Ben", value=4),
],
),
opts.SunburstItem(
name="Father",
value=10,
children=[
opts.SunburstItem(name="Me", value=5),
opts.SunburstItem(name="Brother Peter", value=1),
],
),
],
),
opts.SunburstItem(
name="Nancy",
children=[
opts.SunburstItem(
name="Uncle Nike",
children=[
opts.SunburstItem(name="Cousin Betty", value=1),
opts.SunburstItem(name="Cousin Jenny", value=2),
],
)
],
),
]
sunburst = (
Sunburst(init_opts=opts.InitOpts(width="1000px", height="600px"))
.add(series_name="", data_pair=data, radius=[0, "90%"])
.set_global_opts(title_opts=opts.TitleOpts(title="Sunburst-基本示例"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}"))
.render("旭日图.html")
)
输出
柱状图
2个y的
from pyecharts import options as opts
from pyecharts.charts import Bar, Page
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType
from pyecharts import options as pots
bar = Bar()
bar.add_xaxis(["a",'b','c','d'])
bar.add_yaxis('一号选手',[1,2,3,4])
bar.add_yaxis('二号选手',[5,6,7,8])
bar.set_global_opts(title_opts={"text": "同学们的生活开支"})
# 设置全局配置
# 加上了标题
bar.render('柱状图.html')
输出
缩放的柱状图,可以拖动的
c = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(Faker.days_attrs)
#https://blog.csdn.net/weixin_49432344/article/details/123872327
# faker的详解如上,faker就是将随机来几个数据
.add_yaxis("商家1", Faker.days_values, color=Faker.rand_color())
.set_global_opts(
title_opts=opts.TitleOpts(title="缩放的柱状图"),
datazoom_opts=opts.DataZoomOpts(orient="horizontal"),
# 提供区域缩放的功能,将全图缩小,那样子你就可以进行拖动了
# 设置水平('horizontal')或者竖直('vertical')
)
.render("nmd.html")
)
输出
3d的柱状图
import random
from pyecharts import options as opts
from pyecharts.charts import Bar3D
from pyecharts.faker import Faker
data = [(i, j, random.randint(0, 12)) for i in range(6) for j in range(24)]
# 因为先要创建一个网格出来!!!所以x,y是固定的,而且要全部都有!!
# 因为z是可以变动的,上下
c = (
Bar3D()
.add(
"",
[[d[1], d[0], d[2]] for d in data],
# x,y,z
xaxis3d_opts=opts.Axis3DOpts(Faker.clock, type_="category"),
# x轴的刻度是 时间
yaxis3d_opts=opts.Axis3DOpts(Faker.week_en, type_="category"),
# y轴的刻度是 星期
zaxis3d_opts=opts.Axis3DOpts(type_="value"),
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(max_=20),
title_opts=opts.TitleOpts(title="Bar3D-基本示例"),
)
.render("3d柱状图.html")
)
输出
赶ddl真好玩,xs