1. 程式人生 > >python matplotlib進階篇

python matplotlib進階篇

匯入的模組:

import matplotlib.pyplot as plt
import numpy as np
#正確顯示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
#顯示負號的
plt.rcParams['axes.unicode_minus'] = False
import pandas as pd
from pandas import Series,DataFrame

1.給柱狀圖的柱子設定名字

# 取出一張圖紙
plt.figure(1)
#確定影象的位置
#subplot(xyz) x行y列z位置,比如111就是一行一列一整個
ax1 = plt.subplot(111) #準備畫圖的資料 data = np.array([15,20,18,25]) # 給一個範圍,x軸 x_bar = np.arange(4) # 設定x,y軸,left和height是匿名引數 rect = ax1.bar(left = x_bar,height = data,width=0.5,color='#add8e6') #利用for迴圈來獲取寬度和高度,用途是給每一個柱子設定文字 for rec in rect: x = rec.get_x() # 這是獲取每一個柱子x軸的位置 # print(x) height =
rec.get_height() #這是獲取每一個柱子y軸高度的位置 # print(height) #設定文字bar(柱)上的文字 #語法:ax1.text(x,y,str) x:文字在bar上的位置,預設是0.最左邊,可以加上一個以x軸大小為單位的值 #y:文字在bar上的位置,預設是0.最下邊,可以加上一個以y軸大小為單位的值 #str:是要顯示的文字 ax1.text(x+0.1,height+0.3,str(height)+'W') # 設定x軸 ax1.set_xticks(x_bar) ax1.set_xticklabels(['第一季度','第二季度','第三季度'
,'第四季度']) #set_xlabel和plt.xlabel 一樣的含義 #設定y軸 ax1.set_ylabel('銷量(單位:萬件)') ax1.set_title('2017年季度銷售量統計') ax1.grid(True)# 加上網格 ax1.set_ylim(0,30)#設定y軸範圍 plt.show()

在這裡插入圖片描述

2.同畫布繪製多幅圖形

# 預設的畫素就是80
plt.figure(figsize=(3,3),dpi=80)
#建立一個畫板
plt.figure(1)
plt.subplot(121)  
plt.plot([1,2,3],[1,2,3])
plt.title('畫板1的畫布1')
plt.subplot(122)
plt.plot([1,2,3],[1,2,3])
plt.title('畫板1的畫布2')
plt.tight_layout() # 設定畫布1和畫布2的距離
#畫到新建的畫板裡的
plt.figure(2)
plt.plot([4,5,6],[4,5,6])
plt.title('畫板2的畫布')

在這裡插入圖片描述

3.載入檔案並繪圖

這裡以csv檔案為例子

(1)用csv模組進行讀取

import csv
x=[]
y=[]
with open('csv/matplotlib-demo.csv','r') as csvfile:
    #讀取的檔案
    lines = csv.reader(csvfile,delimiter=',')
#     print(list(lines))
    for each in lines:
        x.append(int(each[0]))# x列表是加入資料表中的第一列
        y.append(int(each[1]))# y列表是加入資料表中的第二列
print(x)
print(y)
plt.plot(x,y,label='csv資料')
plt.title('從檔案載入資料並展示')
plt.legend()
plt.ylim(0,9)#設定y軸的範圍
plt.show()

(2).使用Numpy簡化程式碼

x,y = np.loadtxt('csv/matplotlib-demo.csv',delimiter=',',unpack=True)
plt.plot(x,y,label='csv資料')
plt.title('從檔案載入資料並展示')
plt.legend()
plt.ylim(0,9)#設定y軸的範圍
plt.show()

在這裡插入圖片描述

4.從網路api上載入資料並繪圖

import urllib
url ='https://api.douban.com/v2/book/1220562'
json_object = urllib.request.urlopen(url).read().decode() #開啟讀取解碼

import json
#進行轉換
data = json.loads(json_object)
# print(data)
#獲取所有的標籤
tags =data['tags']
print(tags)

x =[]
y =[]

for each in tags:
    x.append(each['name'])
    y.append(each['count'])
plt.bar(x,y,label='圖書搜尋熱詞')
plt.legend()
plt.xlabel('搜尋的詞條')
plt.ylabel('搜尋排名')
plt.show()

在這裡插入圖片描述