中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python可視化的折線圖是怎樣的

發布時間:2021-10-25 17:15:48 來源:億速云 閱讀:234 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關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()
Python可視化的折線圖是怎樣的

可以發現,圖中存在兩個問題:一是缺少數值標簽,二是橫坐標年份被自動分割了。我們希望能夠添加上數值標簽,然后坐標軸顯示每一年的年份值。接下來,需要采用新的方法重新繪制折線圖。

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()

完善后的折線圖如下:

Python可視化的折線圖是怎樣的

可以看到,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()

繪圖結果如下:

Python可視化的折線圖是怎樣的

如果想添加數值標簽,則可以使用下面的代碼:

 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()

結果如下圖所示:

Python可視化的折線圖是怎樣的

可以看到,兩只股票市值從2017年初開始一直在上漲,萬科的市值是保利的2倍左右。

以上就是Python可視化的折線圖是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜章县| 新郑市| 武义县| 津市市| 龙南县| 珠海市| 漳浦县| 贡嘎县| 青神县| 河南省| 瓦房店市| 红桥区| 皋兰县| 洛浦县| 安陆市| 津南区| 湖口县| 西充县| 交城县| 长兴县| 靖边县| 保亭| 依安县| 海口市| 德昌县| 理塘县| 桑日县| 汉源县| 屯昌县| 新安县| 齐河县| 镇赉县| 宜春市| 客服| 泸西县| 罗平县| 翁源县| 木兰县| 固原市| 佛冈县| 积石山|