1. 程式人生 > >Python--matplotlib 繪圖可視化練手--折線圖/條形圖

Python--matplotlib 繪圖可視化練手--折線圖/條形圖

inline otl axis size enc lib note 折線 notebook

最近學習matplotlib繪圖可視化,感覺知識點比較多,邊學習邊記錄。

對於數據可視化,個人建議Jupyter Notebook。

1.首先導包,設置環境

import pandas as pd
import numpy as np
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
import matplotlib.pyplot as plt
%matplotlib inline #使圖片內嵌交互環境顯示
plt.rcParams[‘font.sans-serif‘]=[‘SimHei‘] #用來正常顯示中文標簽
plt.rcParams[‘axes.unicode_minus‘]=False #用來正常顯示負號

2.讀取數據並顯示

data_every_month = pd.read_csv(‘data_every_month.txt‘)
data_every_month

技術分享

3.畫折線圖

y = data_every_month[‘nums‘].T.values
x = range(0,len(y))
plt.figure(figsize=(10, 6))
plt.plot(x,y,‘‘)  
plt.xticks((0,20,40,60,80,100,120),(‘200504‘,‘200912‘,‘201108‘,‘201306‘,‘201502‘,‘201610‘,‘‘))
plt.xlabel(‘年月‘)
plt.ylabel(‘XX事件數‘)
plt.title(‘每月XX事件數‘)
plt.show()

技術分享

4.取片段數據,同一張圖畫兩條折線來區分

y1=y[79:91]
y2=y[91:102]
x1=range(0,len(y1))
x2=range(0,len(y2))
plt.figure(figsize=(10, 6))
plt.plot(x1,y1,‘‘,label="2015年")
plt.plot(x2,y2,‘‘,label="2016年")
plt.title(‘2015-2016年月XX事件數‘)
plt.legend(loc=‘upper right‘)
plt.xticks((0,2,4,6,8,10),(‘1月‘,‘3月‘,‘5月‘,‘7月‘,‘9月‘,‘11月‘))
plt.xlabel(‘月份‘)
plt.ylabel(‘XX事件數‘)
plt.grid(x1)
plt.show()

技術分享

5.讀取小時頻數數據,畫重疊的條形圖

data_hour2015 = pd.read_csv(‘data_hour2015.txt‘)
data_hour2016 = pd.read_csv(‘data_hour2016.txt‘)
plt.figure(figsize=(10, 6))
data_hour2015[‘nums‘].T.plot.bar(color=‘g‘,alpha=0.6,label=‘2015年‘)
data_hour2016[‘nums‘].T.plot.bar(color=‘r‘,alpha=0.4,label=‘2016年‘)
plt.xlabel(‘小時‘)
plt.ylabel(‘XX事件數量‘)
plt.title(‘XX事件數小時分布‘)
plt.legend(loc=‘upper right‘)
plt.show()

技術分享

6.讀取周頻數數據,畫非重疊的條形圖

data_week2015 = pd.read_csv(‘data_week2015.txt‘)[‘nums‘].T.values
data_week2016 = pd.read_csv(‘data_week2016.txt‘)[‘nums‘].T.values
plt.figure(figsize=(10, 6))
xweek=range(0,len(data_week2015))
xweek1=[i+0.3 for i in xweek]
plt.bar(xweek,data_week2015,color=‘g‘,width = .3,alpha=0.6,label=‘2015年‘)
plt.bar(xweek1,data_week2016,color=‘r‘,width = .3,alpha=0.4,label=‘2016年‘)
plt.xlabel(‘周‘)
plt.ylabel(‘XX事件數量‘)
plt.title(‘XX事件數周分布‘)
plt.legend(loc=‘upper right‘)
plt.xticks(range(0,7),[‘星期日‘,‘星期一‘,‘星期二‘,‘星期三‘,‘星期四‘,‘星期五‘,‘星期六‘])
plt.show()

技術分享

7.讀取類別頻數數據畫水平條形圖

data_bar = pd.read_csv(‘data_bar.txt‘)
label = data_bar[‘wfxw‘].T.values
xtop = data_bar[‘nums‘].T.values
idx = np.arange(len(xtop))
fig = plt.figure(figsize=(12,12))
plt.barh(idx, xtop, color=‘b‘,alpha=0.6)
plt.yticks(idx+0.4,label)
plt.grid(axis=‘x‘)
plt.xlabel(‘XX事件次數‘)
plt.ylabel(‘XX事件名稱‘)
plt.title(‘2015.1-2016.11月XX事件排行榜‘)
plt.show()

技術分享

Python--matplotlib 繪圖可視化練手--折線圖/條形圖