目录
一、完整代码
#第一步:导入库
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Line
#第二步:导入数据
data=pd.read_excel("C:\\Users\\86159\Desktop\\CSDN\\折线图数据.xls")
#第三步:处理数据
x=list(data['专业代码'])#将专业代码列转换成列表形式
y1=list(data['最大值'])#将最大值列转换成列表形式
y2=list(data['最小值'])#将最小值列转换成列表形式
#第四步:用于创建一个名为"line"的Line对象
line=(
Line(init_opts=opts.InitOpts(width='720px', height='400px', bg_color='white')))
#要调整背景颜色,可以在init_opts中设置bg_color参数
#创建了一个Line对象,设置了图表的宽度和高度
#第五步:添加数据:
line.add_xaxis(xaxis_data=x)
line.add_yaxis(series_name="最高分",y_axis=y1,symbol="circle",is_symbol_show=True,itemstyle_opts={"color": "green"},symbol_size=8)
line.add_yaxis(series_name="最低分",y_axis=y2,symbol="pin",is_symbol_show=True,itemstyle_opts={"color": "red"},symbol_size=8)
#第六步:设置全局选项:
# set_global_opts: 这是一个全局设置函数,用于设置图表的各种全局属性。
line.set_global_opts(title_opts=opts.TitleOpts(title="每个专业的最高分最低分"),
xaxis_opts=opts.AxisOpts(name="专业代码",name_rotate=0,name_textstyle_opts={"color": "black","fontSize":15},axislabel_opts={"rotate":45,"color":"blue","fontSize":12},is_show =True,is_inverse = False, name_location = 'center',name_gap = 45),
yaxis_opts=opts.AxisOpts(name="分数", name_textstyle_opts={"color": "black","fontSize":15},axislabel_opts={"rotate": 45,"color":"blue","fontSize":12},is_show =True,name_location = 'center',name_gap = 35,min_ = 300, split_number = 6)
#yaxis_opts=opts.AxisOpts(name="分数", name_textstyle_opts={"color": "red","fontSize":15},axislabel_opts={"rotate": 45,"color":"red","fontSize":15},is_show =True,name_location = 'center',name_gap = 35,min_ = 300, min_interval = 30,max_interval = 60))
#第七步:保存
line.render("折线图.html")
#line.render_notebook()
#渲染图表:使用 `render_notebook()` 方法将图表渲染到Jupyter Notebook中。
二、调参目的介绍
我们画出的简单折线图如下:
其中x、y轴的标题均在坐标轴的一侧,如果想让标题在坐标轴正中间呢?
两条折线图在相近的范围内波动,如果想让纵坐标的值在300-500间,那么两条折线图的变化趋势会更明显,可视化效果会更好一点
通过调整参数美化,得到了下图:
与上图相比,格式上有一些改进,呈现方式上有一些优化。
(下边的图您可能觉得不太好看,了解参数怎么设置之后,小伙伴可以画出自己心目中的美图哦。)
三、代码详解(分段介绍)
第一步:导入库
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Line
导入pandas库,后续用于导入数据
导入所需的库和模块:`pyecharts.options` 和 `pyecharts.charts`
第二步:导入数据
data=pd.read_excel("C:\\Users\\86159\Desktop\\CSDN\\折线图数据.xls")
第三步:处理数据
x=list(data['专业代码'])#将专业代码列转换成列表形式
y1=list(data['最大值'])#将最大值列转换成列表形式
y2=list(data['最小值'])#将最小值列转换成列表形式
第四步:创建一个名为"line"的Line对象
line=(Line(init_opts=opts.InitOpts(width='720px', height='400px', bg_color='white')))
要调整背景颜色,可以在init_opts中设置bg_color参数,这里bg_color=white,即背景颜色为白色
设置图表的宽度和高度
第五步:添加数据
line.add_xaxis(xaxis_data=x)
使用 `add_xaxis()` 方法添加横轴数据(专业代码)。
line.add_yaxis(series_name="最高分",y_axis=y1,symbol="circle",
is_symbol_show=True,is_smooth=True,
itemstyle_opts={"color": "green"},symbol_size=8)
使用 `add_yaxis()` 方法线添加一组纵轴数据:最高分(y1)
其中的参数:
①series_name="最高分":设置y轴数据的名称,这里命名为"最高分"
②y_axis=y1:设置y轴的数据,这里使用y1作为数据。
③symbol="circle":设置数据点的图标样式为圆形。
symbol可选参数如下:
# ‘circle’: 圆形标记。
# ‘rect’: 矩形标记。
# ‘roundRect’: 带圆角的矩形标记。
# ‘triangle’: 三角形标记。
# ‘diamond’: 菱形标记。
# ‘pin’: 标记形状为图钉。
# ‘arrow’: 标记形状为箭头。
④is_symbol_show=True:设置是否显示图标(刚刚设置的circle图标样式),这里设置为显示。
⑤itemstyle_opts={"color": "green"}":设置此条折线的颜色为绿色
⑥symbol_size=8:设置图标(刚刚设置的circle)的大小为8。
line.add_yaxis(series_name="最低分",y_axis=y2,symbol="pin",
is_symbol_show=True,is_smooth=True,
itemstyle_opts={"color": "red"},symbol_size=8)
使用 `add_yaxis()` 方法线添加另一组纵轴数据:最低分(y2)
其他参数介绍同上。
第六步:设置全局选项
line.set_global_opts(title_opts=opts.TitleOpts(title="每个专业的最高分最低分"),
xaxis_opts=opts.AxisOpts(name="专业代码",name_rotate=0,
name_textstyle_opts={"color": "black","fontSize":15},
axislabel_opts={"rotate":45,"color":"blue","fontSize":12},
is_show =True,is_inverse = False,
name_location = 'center',name_gap = 45),
yaxis_opts=opts.AxisOpts(name="分数",
name_textstyle_opts={"color": "black","fontSize":15},
axislabel_opts={"rotate": 45,"color":"blue","fontSize":12},
is_show =True,name_location = 'center',name_gap = 35,
min_ = 300, split_number = 6)
set_global_opts: 这是一个全局设置函数,用于设置图表的各种全局属性。
上边这段代码,设置了三大部分的内容:①折线图标题、②x轴相关设置、③y轴相关设置
下边分别对三部分设置进行介绍:
(1)折线图标题设置
title_opts=opts.TitleOpts(title="每个专业的最高分最低分")
设置折线图标题为“每个专业的最高分最低分”
(2)x轴相关设置
xaxis_opts=opts.AxisOpts(name="专业代码",name_rotate=0,
name_textstyle_opts={"color": "black","fontSize":15},
axislabel_opts={"rotate":45,"color":"blue","fontSize":12},
is_show =True,is_inverse = False,
name_location = 'center',name_gap = 45)
上面代码对x轴的相关内容进行了设置
①name="专业代码":设置x轴的名称为“专业代码”
②name_rotate=0:设置x轴名称“专业代码”旋转的角度为0,
如果name_rotate=60,那么“专业代码”这四个字就逆时针旋转60°
③name_textstyle_opts={"color": "black","fontSize":15}
坐标轴名称可以通过name_textstyle_opts参数进行控制,其中可以设置颜色、字体大小等样式
这里设置x坐标轴名称为黑色,字体大小为15
④axislabel_opts={"rotate":45,"color":"blue","fontSize":12}:
"rotate":45 说明x轴所有的标签值(刻度值)均逆时针旋转45°
"color":"blue" 说明x轴所有的标签值(刻度值)颜色为蓝色
"fontSize":12 说明x轴所有的标签值(刻度值)字体大小为12。
⑤is_show:设置是否显示x轴标签,值为True表示显示,值为False表示不显示。
(小伙伴可以改一下这个参数,运行出结果后对比体会一下)
⑥is_inverse:设置x轴标签的方向,值为True表示逆时针方向,值为False表示顺时针方向。默认为Fasle.(小伙伴可以改一下这个参数,运行出结果后对比体会一下)
⑦name_location:设置x轴名称("专业代码")的位置,为'center'表示居中对齐。
参数可选:'start', 'middle', 'center','end'
⑧name_gap:设置x轴主题标签("专业代码")与 x坐标轴的间距,此处设置为45。
(3)y轴相关设置
yaxis_opts=opts.AxisOpts(name="分数",
name_textstyle_opts={"color": "black","fontSize":15},
axislabel_opts={"rotate": 45,"color":"blue","fontSize":12},
is_show =True,name_location = 'center',name_gap = 35,
min_ = 300, split_number = 6)
上面代码对y轴的相关内容进行了设置
其中很多参数与上面对x轴设置时的参数相同,下面介绍一下刚才没有涉及到的参数
①`min_ = 300`:设置y轴的最小值为300。(坐标轴刻度最小值)
也就是说y轴的值并不是从0开始了,而是从300开始。
同理,也可以设置max_参数(坐标轴刻度最大值),控制y轴的最大值
②`split_number = 6`:设置y轴分割线数量为6。
这个意思就是将y轴的刻度分成了6组,
假如:300、320、340、360、380、400、420,y轴的最小值的300,最大值为420,组间距为20,这样y轴就被分割成了6部分
补充:
这里再补充上面没有涉及到的两个参数,即min_interval 和max_interval
min_interval :坐标轴最小间隔大小
max_interval:最标轴最大间隔大小
第七步:保存
line.render("折线图.html")
#如果要保存到固定路径,就选择下边的代码
#line.render("C:\\Users\\86159\Desktop\\CSDN\\折线图.html")
将画出来的图保存为html网页格式,html名称为折线图
line.render_notebook()
如果小伙伴你使用的是jupyter notebook,可以利用上面代码渲染图表:使用 `render_notebook()` 方法将图表渲染到Jupyter Notebook中,可以直接再jupyter中输出查看。
四、将折线平滑
通过上边的代码,我们得到了如下折线图:
如果想要将折线平滑,怎么实现呢?请看下边
line.add_yaxis(series_name="最高分",y_axis=y1,symbol="circle",is_symbol_show=True,is_smooth=True,itemstyle_opts={"color": "green"},symbol_size=8)
line.add_yaxis(series_name="最低分",y_axis=y2,symbol="pin",is_symbol_show=True,is_smooth=True,itemstyle_opts={"color": "red"},symbol_size=8)
第五步添加y轴数据时,只要加上is_smooth=True,这个参数,即可实现。