千家信息网

Python可视化的折线图是怎样的

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇文章给大家分享的是有关Python可视化的折线图是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。摘要: 利用matplotli
千家信息网最后更新 2025年11月07日Python可视化的折线图是怎样的

本篇文章给大家分享的是有关Python可视化的折线图是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

摘要: 利用matplotlib绘制横轴为日期格式的折线图时,存在不少技巧。本文借助Tushare包返回的股票数据,介绍日期型折线图绘制的方法。

回顾:

Python数据处理分析(1):日期型数据处理

折线图绘制的数据源,采用Tushare包获取上市公司基本数据表,格式如下:

1import pandas as pd
2data = pd.read('get_stock_basics.csv',encoding = 'utf8')
3print(data.head())
4
5ts_code symbol name list_status list_date is_hs
6000001.SZ 1 平安银行 L 19910403 S
7000002.SZ 2 万科A L 19910129 S
8000004.SZ 4 国农科技 L 19910114 N
9000005.SZ 5 世纪星源 L 19901210 N

然后利用resampleto.period方法汇总各年度的上市公司数量数据,格式为Pandas.Series数组。

 1# 汇总各年上市公司数量
2data = data.set_index(['list_date'])
3data = data.resample('AS').count()['ts_code']
4data = data.to_period('A')
5print(data.head())
6print(data.tail())
7# 结果如下:
8list_date
91990 7
101991 4
111992 37
121993 106
131994 99
14...
15list_date
162014 124
172015 223
182016 227
192017 438
202018 78

1. Series直接绘制折线图

首先,我们可以直接利用pandas的数组Series绘制折线图:

 1import matplotlib.pyplot as plt
2plt.style.use('ggplot') # 设置绘图风格
3fig = plt.figure(figsize = (10,6)) # 设置图框的大小
4ax1 = fig.add_subplot(1,1,1)
5data.plot() # 绘制折线图
6
7# 设置标题及横纵坐标轴标题
8colors1 = '#6D6D6D' #设置标题颜色为灰色
9plt.title('历年中国内地上市公司数量变化',color = colors1,fontsize = 18)
10plt.xlabel('年份')
11plt.ylabel('数量(家)')
12plt.show()

可以发现,图中存在两个问题:一是缺少数值标签,二是横坐标年份被自动分割了。我们希望能够添加上数值标签,然后坐标轴显示每一年的年份值。接下来,需要采用新的方法重新绘制折线图。

2. 折线图完善

 1# 创建x,y轴标签
2x = np.arange(0,len(data),1)
3 ax1.plot(x,data.values, #x、y坐标
4 color = '#C42022', #折线图颜色为红色
5 marker = 'o',markersize = 4 #标记形状、大小设置
6 )
7ax1.set_xticks(x) # 设置x轴标签为自然数序列
8ax1.set_xticklabels(data.index) # 更改x轴标签值为年份
9plt.xticks(rotation=90) # 旋转90度,不至太拥挤
10
11for x,y in zip(x,data.values):
12 plt.text(x,y + 10,'%.0f' %y,ha = 'center',color = colors1,fontsize = 10 )
13 # '%.0f' %y 设置标签格式不带小数
14# 设置标题及横纵坐标轴标题
15plt.title('历年中国内地上市公司数量变化',color = colors1,fontsize = 18)
16plt.xlabel('年份')
17plt.ylabel('数量(家)')
18# plt.savefig('stock.png',bbox_inches = 'tight',dpi = 300)
19plt.show()

完善后的折线图如下:

可以看到,x轴逐年的数据都显示并且数值标签也添加上了。

3. 多元折线图

上面介绍了一元折线图的绘制,当需要绘制多元折线图时,方法也很简单,只要重复绘图函数即可。这里我们以二元折线图为例,绘制国内两家知名地产公司万科和保利地产2017年的市值变化对比折线图。

3.1. 数据来源

数据源仍然采用tushare包的pro.daily_basic()接口,该接口能够返回股票的每日股市数据,其中包括每日市值total_mv。我们需获得的两只股票分别是万科地产(000002.SZ)和保利地产(600048.SH),下面就来获取两只股票2017年的市值数据。

 1import tushare as ts
2ts.set_token('你的token') # 官网注册后可以获得
3pro = ts.pro_api()
4def get_stock():
5 lst = []
6 ts_codes = ['000002.SZ', '600048.SH']
7 for ts_code in ts_codes:
8 data = pro.daily_basic(
9 ts_code=ts_code, start_date='20170101', end_date='20180101')
10 print(lst)
11 reutrn lst
12 # 结果如下,total_mv为当日市值(万元):
13 #万科地产数据
14 ts_code trade_date close … total_mv circ_mv
150 000002.SZ 20171229 31.06 … 3.43E+07 3.02E+07
161 000002.SZ 20171228 30.7 … 3.39E+07 2.98E+07
172 000002.SZ 20171227 30.79 … 3.40E+07 2.99E+07
183 000002.SZ 20171226 30.5 … 3.37E+07 2.96E+07
194 000002.SZ 20171225 30.37 … 3.35E+07 2.95E+07
20
21 #保利地产数据
22 ts_code trade_date close … total_mv circ_mv
230 600048.SH 20171229 14.15 … 1.68E+07 1.66E+07
241 600048.SH 20171228 13.71 … 1.63E+07 1.61E+07
252 600048.SH 20171227 13.65 … 1.62E+07 1.60E+07
263 600048.SH 20171226 13.85 … 1.64E+07 1.63E+07
274 600048.SH 20171225 13.55 … 1.61E+07 1.59E+07

下面对数据作进一步修改,从DataFrame中提取total_mv列,index设置为日期,再利用resample和pd.to_period方法按月汇总市值数据。

 1data['trade_date'] = pd.to_datetime(data['trade_date'])
2# 设置index为日期
3data = data.set_index(data['trade_date']).sort_index(ascending=True)
4# 按月汇总和显示
5data = data.resample('m')
6data = data.to_period()
7# 市值改为亿元
8market_value = data['total_mv']/10000
9
10# 二者结果分别如下,万科地产:
112017-01 2291.973270
122017-02 2286.331037
132017-03 2306.894790
142017-04 2266.337906
152017-05 2131.053098
162017-06 2457.716659
172017-07 2686.982164
182017-08 2524.462077
192017-09 2904.085487
202017-10 2976.999550
212017-11 3263.374043
222017-12 3317.107474
23# 保利地产:
242017-01 1089.008286
252017-02 1120.023350
262017-03 1145.731640
272017-04 1153.760435
282017-05 1108.230609
292017-06 1157.276044
302017-07 1244.966905
312017-08 1203.580209
322017-09 1290.706606
332017-10 1244.438756
342017-11 1336.661916
352017-12 1531.150616

3.2. 绘制二元折线图

利用上面的Series数据就可以作图了。

 1# 设置绘图风格
2plt.style.use('ggplot')
3fig = plt.figure(figsize = (10,6))
4colors1 = '#6D6D6D' #标题颜色
5
6# data1万科,data2保利
7data1 = lst[0]
8data2 = lst[1]
9# 绘制第一条折线图
10data1.plot(
11color = '#C42022', #折线图颜色
12marker = 'o',markersize = 4, #标记形状、大小设置
13label = '万科'
14)
15# 绘制第二条折线图
16data2.plot(
17color = '#4191C0', #折线图颜色
18marker = 'o',markersize = 4, #标记形状、大小设置
19label = '保利'
20)
21# 还可以绘制更多条
22# 设置标题及横纵坐标轴标题
23plt.title('2017年万科与保利地产市值对比',color = colors1,fontsize = 18)
24plt.xlabel('月份')
25plt.ylabel('市值(亿元)')
26plt.savefig('stock1.png',bbox_inches = 'tight',dpi = 300)
27plt.legend() # 显示图例
28plt.show()

绘图结果如下:

如果想添加数值标签,则可以使用下面的代码:

 1# 绘制第一条折线图
2# 创建x,y轴标签
3x = np.arange(0,len(data1),1)
4ax1.plot(x,data1.values, #x、y坐标
5color = '#C42022', #折线图颜色红色
6marker = 'o',markersize = 4, #标记形状、大小设置
7label = '万科'
8)
9ax1.set_xticks(x) # 设置x轴标签
10ax1.set_xticklabels(data1.index) # 设置x轴标签值
11# plt.xticks(rotation=90)
12for x,y in zip(x,data1.values):
13 plt.text(x,y + 10,'%.0f' %y,ha = 'center',color = colors1,fontsize = 10 )
14 # '%.0f' %y 设置标签格式不带小数
15
16# 绘制第二条折线图
17x = np.arange(0,len(data2),1)
18
19ax1.plot(x,data2.values, #x、y坐标
20color = '#4191C0', #折线图颜色蓝色
21marker = 'o',markersize = 4, #标记形状、大小设置
22label = '保利'
23)
24ax1.set_xticks(x) # 设置x轴标签
25ax1.set_xticklabels(data2.index) # 设置x轴标签值
26# plt.xticks(rotation=90)
27for x,y in zip(x,data2.values):
28 plt.text(x,y + 10,'%.0f' %y,ha = 'center',color = colors1,fontsize = 10 )
29 # '%.0f' %y 设置标签格式不带小数
30
31# 设置标题及横纵坐标轴标题
32plt.title('2017年万科与保利地产市值对比',color = colors1,fontsize = 18)
33plt.xlabel('月份')
34plt.ylabel('市值(亿元)')
35
36plt.savefig('stock1.png',bbox_inches = 'tight',dpi = 300)
37plt.legend() # 显示图例
38plt.show()

结果如下图所示:

可以看到,两只股票市值从2017年初开始一直在上涨,万科的市值是保利的2倍左右。

以上就是Python可视化的折线图是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

线图 数据 标签 市值 万科 地产 标题 保利 颜色 公司 大小 数量 格式 上市公司 年份 形状 方法 日期 标记 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器主机重启键在哪里 数据库中的行为设计与实现 什么是物联网软件开发 静安区数据库安防系统生产厂家 未来互联网科技对我们的影响 软件开发的三层架构是哪三层 可视化智慧学校软件开发 管道设计和管筒设计数据库 苏州应用软件开发价格表模板 天气预报app抓取数据库 网络安全从业国家认证要求 联通邮箱服务器安全类型 建立网络安全教育基地 中国最新网络安全新闻 网络安全大赛是什么意思 淘宝网络安全防御体系 数据库运用的例子 什么行业服务器最多 电信公司网络安全周活动小结 在线考试软件开发价位 如何关闭网络安全密匙 内蒙古软件开发涉密甲级资质 交通违章代码软件开发 国家网络安全管理局上海 关闭ssl无法访问服务器 安监局网络安全工作 网络安全绘画平板保护 软件开发 引言 互联网基金是科技板块吗 韩国服务器处于脱机状态csgo
0