一、前言
在刚开始学习python可视化编程的时候,我觉得一个图形,并且没有变化的图形是不够的,过于简单,不美观。所以在后面的学习过程中,我就开始注重学习如何改变我的图表,使它富有变化性,当然这也是学校布置的一个作业,也幸运的在班级里获得了第一。
在上一篇博客的最后留了一张python可视化大图展示的照片,这一篇也会有所涉及哦!
上一篇https://blog.csdn.net/2301_80044751/article/details/140396290?spm=1001.2014.3001.5501
这里是pyecharts的官网及其介绍,里面也有其它的图形可供参考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://05x-docs.pyecharts.org/#/zh-cn/
那么接下来就来看看如何编写我们的代码啦!(个人理解,如有错误,请大佬点拨)
二、折线图加柱状图的叠加图标
这是我们的最终效果图!
在这里面我们有两个图,一个是柱状图,一个是折线图,并且设置了主题颜色还有根据数据大小而改变的柱条颜色,在左右两边有柱状图,并且在每一个节点上都标有数据,同时在底下我们可以看到两个图形的标题。
上面所说的所有东西都可以我们配置,并且可以更改设置!
首先,我们先看看效果:
python可视化信息展示
可以看到我们的图标是可以根据我们的一些需求来配置的,并且可以变化!接下来我们解释写的代码!
import pyecharts.options as opts
from pyecharts.charts import Bar, Line
from pyecharts.options import ToolboxOpts, VisualMapOpts
from pyecharts.globals import ThemeType
x_data = ['2016', '2017', '2018', '2019', '2020', '2021', '2022']
这一部分是我们所引用的库函数。
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="社会物流总额(亿万元)", # 此处为设置图例配置项的名称
y_axis=[220, 230, 245, 275, 285, 305, 340, 353],
label_opts=opts.LabelOpts(is_show=True), # 此处将标签配置项隐藏
z=0 # 因为折线图会被柱状图遮挡,所以此处把柱状图置底
)
在代码里面,大部分都有解释代码,大家可以好好看看!
这一部分是我们构建柱状图对象,这里有一个我们需要着重注意的地方,就是在我们构建对象的时候所写的代码
Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
这里是我们设置背景的地方,我们的图标在一开始设置的时候,底色是白色的,有些时候不能够满足我们的需要,因此我们可以修改我们的主题。
这个是我们所可以使用的主题,大致如上!
.extend_axis(
yaxis=opts.AxisOpts(
type_="value",
min_=0, # 刻度标签的最小值
max_=14, # 刻度标签的最大值
interval=2, # 步长
axislabel_opts=opts.LabelOpts(formatter="{value} %"), # 设置刻度标签的单位
)
)
这是我们的右侧坐标轴设置,如果想要看其它的内置函数,可以右键进入函数查看代码!,接下来就是我们的全局设置选项。
.set_global_opts(
tooltip_opts=opts.
TooltipOpts(
is_show=True,
trigger="axis",
axis_pointer_type="cross",
), # 设置提示框配置项,触发类型为坐标轴类型,指示器类型为"cross"
xaxis_opts=opts.AxisOpts(
type_="category",
axispointer_opts=opts.AxisPointerOpts(
is_show=True,
type_="shadow"
),
), # 设置x轴配置项为类目轴,适用于离散的类目数据
yaxis_opts=opts.AxisOpts(
type_="value",
min_=0, # 刻度标签的最大值
max_=400, # 刻度标签的最小值
interval=50, # 步长
axistick_opts=opts.AxisTickOpts(is_show=True), # 显示坐标轴刻度
splitline_opts=opts.SplitLineOpts(is_show=True), # 显示分割线
),
这两个是对x轴和y轴的一些配置,这里说一点比较重要的理解方法:很多我们所看到的代码都是它作用的简写,或者就是那个单词,可以去搜搜单词的意思,然后就可以知道它的作用,这种习惯也是我们所要学习的方式。
接下来就是一些其它配置
title_opts=opts.TitleOpts(
is_show=True,
title="2015-2022年中国社会物流总额变化情况",
pos_left="center"
),
# 设置标题并将其居中
toolbox_opts=ToolboxOpts(is_show=True),
legend_opts=opts.LegendOpts(
pos_right="center",
pos_bottom="bottom"
), # 设置图例配置项,并将其放在底部
visualmap_opts=VisualMapOpts(
is_show=True,
min_=200,
max_=400
)
)
)
到这里我们就完成了!我们的图形就好了,当然这里说的是我们的柱状图,接下里我们就可以看我们的折线图了。
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="增速(%)",
yaxis_index=1,
y_axis=[0, 4.5, 6.5, 12.2, 3.6, 0.7, 11.4, 3.7],
label_opts=opts.LabelOpts(is_show=True),
symbol="triangle",
symbol_size=20,
)
.set_series_opts(
linestyle_opts=opts.LineStyleOpts(width=4),
visualmap_opts=VisualMapOpts(
is_show=False,
max_=20
)
) # 设置线条宽度为4
)
我们的很多图形和代码其实有很多的共同之处,这里就不在继续解释这一部分代码了。
很重要的一点:当你觉得这个东西不明白是什么作用的时候,你就把它改了或者去掉,实践出真知
三、可视化大图展示
在这一部分我们介绍一个Page库,里面可以将我们图标拼接起来,通过组合来展示一张好看的图形。
就像这种。
def page_draggable_layout():
page = Page(layout=Page.DraggablePageLayout)
bar = bar_3d()
bar.chart_id = "wo_xi_huan_liu_yu_fan"
pie = circle()
pie.chart_id = "yu_fan_zhen_hao_kan"
bar_line = LXH()
bar_line.chart_id = "wo_xihuan_yufan"
bar_1 = GLMD()
bar_1.chart_id = "yu_fan_zhen_haokan"
bar_2 = TLYY()
bar_2.chart_id = "xiao_wang_ba"
liquid = LLL()
liquid.chart_id = "I_love_liu_yu_fan"
# table = table_base()
# table.chart_id = "I_love_liu_yu_fan"
# 每加一张图就在这里把要加的那张图的名字放在这,格式参照上述
page.add(
pie,
bar,
bar_line,
bar_1,
bar_2,
liquid,
)
page.render("all_chart.html")
上面就是我们的代码,也是很重要的一部分,把你的每一个图形都在Page里导入。你想叫它什么都行咯!
这里要介绍的东西不是很多,就把图形拼接上去,就不再赘述了。
四、折线图加柱状图代码
import pyecharts.options as opts
from pyecharts.charts import Bar, Line
from pyecharts.options import ToolboxOpts, VisualMapOpts
from pyecharts.globals import ThemeType
x_data = ['2016', '2017', '2018', '2019', '2020', '2021', '2022']
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="社会物流总额(亿万元)", # 此处为设置图例配置项的名称
y_axis=[220, 230, 245, 275, 285, 305, 340, 353],
label_opts=opts.LabelOpts(is_show=True), # 此处将标签配置项隐藏
z=0 # 因为折线图会被柱状图遮挡,所以此处把柱状图置底
)
.extend_axis(
yaxis=opts.AxisOpts(
type_="value",
min_=0, # 刻度标签的最小值
max_=14, # 刻度标签的最大值
interval=2, # 步长
axislabel_opts=opts.LabelOpts(formatter="{value} %"), # 设置刻度标签的单位
)
)
.set_global_opts(
tooltip_opts=opts.
TooltipOpts(
is_show=True,
trigger="axis",
axis_pointer_type="cross",
), # 设置提示框配置项,触发类型为坐标轴类型,指示器类型为"cross"
xaxis_opts=opts.AxisOpts(
type_="category",
axispointer_opts=opts.AxisPointerOpts(
is_show=True,
type_="shadow"
),
), # 设置x轴配置项为类目轴,适用于离散的类目数据
yaxis_opts=opts.AxisOpts(
type_="value",
min_=0, # 刻度标签的最大值
max_=400, # 刻度标签的最小值
interval=50, # 步长
axistick_opts=opts.AxisTickOpts(is_show=True), # 显示坐标轴刻度
splitline_opts=opts.SplitLineOpts(is_show=True), # 显示分割线
),
title_opts=opts.TitleOpts(
is_show=True,
title="2015-2022年中国社会物流总额变化情况",
pos_left="center"
),
# 设置标题并将其居中
toolbox_opts=ToolboxOpts(is_show=True),
legend_opts=opts.LegendOpts(
pos_right="center",
pos_bottom="bottom"
), # 设置图例配置项,并将其放在底部
visualmap_opts=VisualMapOpts(
is_show=True,
min_=200,
max_=400
)
)
)
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="增速(%)",
yaxis_index=1,
y_axis=[0, 4.5, 6.5, 12.2, 3.6, 0.7, 11.4, 3.7],
label_opts=opts.LabelOpts(is_show=True),
symbol="triangle",
symbol_size=20,
)
.set_series_opts(
linestyle_opts=opts.LineStyleOpts(width=4),
visualmap_opts=VisualMapOpts(
is_show=False,
max_=20
)
) # 设置线条宽度为4
)
bar.overlap(line).render("社会物流总额.html")
第二个图的代码太长了,就不列举出来咯!
大家觉得有用的话,就点点赞,如果觉得有啥问题,欢迎在评论区交流!