本篇笔记主要是记录补充关于Python数据结构的知识及学习数据可视化的收获。[更新]
一、数据结构知识补充
1.元组
元组是一个固定长度,不可改变的Python序列对象。创建元组的最简单方式,是用逗号分隔一列值:
当用复杂的表达式定义元组,最好将值放到圆括号内,如下所示:
用tuple可以将任意序列或迭代器转换成元组:
可以用加号运算符将元组串联起来:
(4,None,'foo')+(6,0)+('bar',)
(4, None, 'foo', 6, 0, 'bar')
元组乘以一个整数,像列表一样,会将几个元组的复制串联起来(对象本身并没有被复制,只是引用了它):
('foo', 'bar') * 4
('foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'bar')
2.拆分元组
如果你想将元组赋值给类似元组的变量,Python会试图拆分等号右边的值:
tup = (4, 5, 6)
a, b, c = tup
c
6
即使含有元组的元组也会被拆分:
tup = 4, 5, (6, 7)
a, b, (c, d) = tup
d
7
在Python中,替换可以这样做:
a,b=1,2
a
1
b
2
b, a = a, b
a
2
b
1
变量拆分常用来迭代元组或列表序列:
seq = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
for a, b, c in seq:
print('a={0}, b={1}, c={2}'.format(a, b, c))
a=1, b=2, c=3
a=4, b=5, c=6
a=7, b=8, c=9
Python最近新增了更多高级的元组拆分功能,允许从元组的开头“摘取”几个元素。它使用
了特殊的语法*rest,这也用在函数签名中以抓取任意长度列表的位置参数:
values = 1, 2, 3, 4, 5
a, b, *rest = values
a, b
(1, 2)
rest
[3, 4, 5]
rest的部分是想要舍弃的部分,rest的名字不重要。作为惯用写法,许多Python程序员会将不需要的变量使用下划线:
a, b, *_ = values
- tuple方法
因为元组的大小和内容不能修改,它的实例方法都很轻量。其中一个很有用的就是count
(也适用于列表),它可以统计某个值得出现频率:
a = (1, 2, 2, 2, 3, 4, 2)
a.count(2)
4
数据可视化
常用:Pyecharts、highcharts
1.官网数据可视化图形:
https://gallery.pyecharts.org/#/README
2.Pyecharts配置项使用
所有配置项官网:https://pyecharts.org
- 常见官网查询特定配置项
标题配置项
https://pyecharts.org/#/zh-cn/global_options?id=titleopts%ef%bc%9a%e6%a0%87%e9%a2%98%e9%85%8d%e7%bd%ae%e9%a1%b9
图例配置项
https://pyecharts.org/#/zh-cn/global_options?id=legendopts%ef%bc%9a%e5%9b%be%e4%be%8b%e9%85%8d%e7%bd%ae%e9%a1%b9
视觉映射配置项
https://pyecharts.org/#/zh-cn/global_options?id=visualmapopts%ef%bc%9a%e8%a7%86%e8%a7%89%e6%98%a0%e5%b0%84%e9%85%8d%e7%bd%ae%e9%a1%b9
设置系列配置项
https://pyecharts.org/#/zh-cn/series_options?id=itemstyleopts%ef%bc%9a%e5%9b%be%e5%85%83%e6%a0%b7%e5%bc%8f%e9%85%8d%e7%bd%ae%e9%a1%b9
3.Pyecharts配置项简介
pyecharts的图表样式都是通过配置来操作的,包括初始化、全局配置项、系列配置项、图表配置项等。
- 初始化配置
在初始化配置中,可以设置画布的长、宽,网页标题、图表主题、背景色等;
初始化可通过options.InitOpts
设置
#初始化配置项
Pie(
init_opts=opts.InitOpts(
# 图表画布宽度
width="1200px",
# 图表画布高度
height="700px",
# 网页标题
page_title='我是网页标题',
# 图表主题
theme='dark',
# 图表背景颜色
bg_color="#2c343c",
# 图表 ID,图表唯一标识,用于在多图表时区分
chart_id='',
)
- 全局配置项
全局配置项通过set_global_options
方法设置
1.标题配置项
标题配置项中常用的为标题内容及展示位置、标题字体、大小等
#title_opts为全局配置项中标题设置参数
#options.TitleOpts为全局配置项中标题设置的值,是一个方法
#方法的参数包括图表标题名称title、位置pos_left、pos_right等,以下表示居中显示
title_opts=options.TitleOpts(title="示例",pos_left="center",pos_right="center")
#title_textstyle_opts是options.TitleOpts的另一个参数,表示文本类型
#options.TextStyleOpts为设置文本字体、大小的值,以下表示字体为“微软雅黑”,字体大小为12
title_textstyle_opts=options.TextStyleOpts(font_family="微软雅黑",font_size="12")
2.图表Y轴样式
图表分割线也需要在全局配置项中设置
#yaxis_opts为全局配置的y轴展示样式参数
#options.AxisOpts为系列配置项的坐标轴配置
#splitline_opts表示是否展示坐标轴的分割线,默认为False,即不展示
yaxis_opts=options.AxisOpts(splitline_opts=options.SplitLineOpts(is_show=True))
3.图例设置项
图例的展示形式、位置也是需要在全局配置项中设置的
# legend_opts表示全局配置的图例配置项
#options.LegendOpts表示图例配置项的值,可以配置位置、字体、大小等,如下:
legend_opts=options.LegendOpts(pos_bottom="0",
textstyle_opts=options.TextStyleOpts(font_family="微软雅黑",font_size="8"))
- 系列配置项
系列配置项通过set_series_opts方法设置
1.标签配置项
标签配置项可配置标签的字体颜色、字体大小等
#label_opts表示标签选项参数
#options.LabelOpts表示配置标签选项的方法
#方法包括颜色配置、字体、大小等
.set_series_opts(label_opts=options.LabelOpts(color="#0A0A0D",font_family="微软雅黑",font_size="10"))
2.分割线配置项
分割线配置项作为系列配置项,常用作全局配置项中的Y轴样式的参数值
yaxis_opts=options.AxisOpts(splitline_opts=options.SplitLineOpts(is_show=True))
- 图表配置项
除了全局和系列配置项,具体的图表类型也有自己独特的配置项,比如柱状图就可以设置柱子之间的宽度、柱子的宽度以及柱子的颜色
#category_gap可以设置柱子的宽度,因为默认的柱子宽度可能会宽,不好看
#options.ItemStyleOpts可以设置柱子的颜色,如果会js,可以嵌入js实现柱子不同的颜色
bar.add_yaxis("",data,category_gap='60%',itemstyle_opts=options.ItemStyleOpts(color="#ccc"))
- 具体示例
#设置全局配置项
.set_global_opts(
# 标题配置项,更多请看官方文档https://pyecharts.org/#/zh-cn/global_options?id=titleopts%ef%bc%9a%e6%a0%87%e9%a2%98%e9%85%8d%e7%bd%ae%e9%a1%b9
title_opts=opts.TitleOpts(title="主标题",
title_textstyle_opts=opts.TextStyleOpts(font_size=25),#文本大小
title_link='xxx.html', # 主标题跳转 URL 链接
subtitle='副标题',
subtitle_textstyle_opts=opts.TextStyleOpts(font_style='oblique',font_family='Microsoft YaHei', color='#eb1212')#字体风格,字体样式,字体颜色,
),
# 图例配置项,更多请看官方文档https://pyecharts.org/#/zh-cn/global_options?id=legendopts%ef%bc%9a%e5%9b%be%e4%be%8b%e9%85%8d%e7%bd%ae%e9%a1%b9
legend_opts=opts.LegendOpts(
is_show=True, # 是否显示图例组件
#图例组件离容器左侧的距离。
# left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
# 也可以是 'left', 'center', 'right'。
# 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。
pos_left = '900px',
# 图例组件离容器右侧的距离。
# right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
pos_right = None,
# 图例组件离容器上侧的距离。
# top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
# 也可以是 'top', 'middle', 'bottom'。
# 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
pos_top = '30px',
# 图例组件离容器下侧的距离。
# bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
pos_bottom = None,
# 图例列表的布局朝向。可选:'horizontal', 'vertical'
orient = 'vertical',
# 图例标记和文本的对齐。默认自动(auto)
# 根据组件的位置和 orient 决定
# 当组件的 left 值为 'right' 以及纵向布局(orient 为 'vertical')的时候为右对齐,即为 'right'。
# 可选参数: `auto`, `left`, `right`
align = 'auto',
# 图例内边距,单位px,默认各方向内边距为5
padding = 5,
# 图例每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。
# 默认间隔为 10
item_gap = 10,
# 图例标记的图形宽度。默认宽度为 25
item_width = 25,
# 图例标记的图形高度。默认高度为 14
item_height = 14,
# 图例关闭时的颜色。默认是 #ccc
inactive_color = '#ffffff',
),
# 视觉映射配置项https://pyecharts.org/#/zh-cn/global_options?id=visualmapopts%ef%bc%9a%e8%a7%86%e8%a7%89%e6%98%a0%e5%b0%84%e9%85%8d%e7%bd%ae%e9%a1%b9
visualmap_opts = opts.VisualMapOpts(
# 是否为分段型
is_piecewise = True,
# 是否反转 visualMap 组件
is_inverse = False,
# 自定义的每一段的范围,以及每一段的文字,以及每一段的特别的样式。例如:
pieces = [
{"min": 1500}, #// 不指定 max,表示 max 为无限大(Infinity)。
# {"min": 900, "max": 1500},
{"min": 310, "max": 1000},
{"min": min(fv), "max": max(fv)},###这里由于数据范围的缘故,导致渲染出的图不好看
{"min": 10, "max": max(fv)/2, "label": f'10 到 {max(fv)/2}(自定义label)'},
{"value": fv[0], "label": '123(自定义特殊颜色)', "color": 'grey'}, #//表示 value 等于 123 的情况
{"value": fv, "label": 'SSS', "color": 'red'},
{"max": 5} #// 不指定 min,表示 min 为无限大(-Infinity)。
]
),
)
#设置系列配置项,https://pyecharts.org/#/zh-cn/series_options?id=itemstyleopts%ef%bc%9a%e5%9b%be%e5%85%83%e6%a0%b7%e5%bc%8f%e9%85%8d%e7%bd%ae%e9%a1%b9
# .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
.render("pie_position.html")
)