python常用繪圖

因爲需要做實驗,所以在此做個記錄!

一、折線圖

1、一個簡單的折線圖繪製

import matplotlib.pyplot as plt

x = [i for i in range(8)]
color = ['g', 'r', 'b', 'y', 'o', 'd']
y = [3,4,5,8,0,5,7,9]
plt.plot(x, y, 'r')
plt.show()

                                                     

2、稍複雜的關於時間折線圖繪製

import datetime
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt



def print_graph2(data_list):
    # 面向對象方式
    fig = plt.figure()
    start = datetime.datetime(2002,1,1)  # 起始時間
    stop = datetime.datetime(2002,12,31)  # 停止時間
    y1 = [float(data_list[i][2]) for i in range(len(data_list) - 1)]#6288是我自己的數據集長度
    delta = datetime.timedelta(days=1)
    dates = mpl.dates.drange(start, stop, delta)  # 生成一個matplotli認得的days序列
    y = np.random.rand(len(dates))
    ax = plt.gca()
    ax.plot_date(dates, y1, linestyle='-', marker='',color='red' )
    date_format = mpl.dates.DateFormatter('%Y-%m')
    # 只顯示年月
    ax.xaxis.set_major_formatter(date_format, )
    fig.autofmt_xdate()
    # 開啓自適應
    plt.show()

if __name__ == '__main__':
    data_list = [['2002-01-01', '91.85', '282'], ['2002-01-02', '91.88', '300'], ['2002-01-03', '91.77', '243'], ['2002-01-04', '91.78', '228'], ['2002-01-05', '91.8', '233'], ['2002-01-06', '91.85', '248'], ['2002-01-07', '91.8425', '245.625'], ['2002-01-08', '91.835', '243.25'], ['2002-01-09', '91.8275', '240.875'], ['2002-01-10', '91.82', '238.5'], ['2002-01-11', '91.8125', '236.125'], ['2002-01-12', '91.805', '233.75'], ['2002-01-13', '91.7975', '231.375'], ['2002-01-14', '91.79', '229'], ['2002-01-15', '91.78', '225'], ['2002-01-16', '91.85', '253'], ['2002-01-17', '91.86', '243'], ['2002-01-18', '91.91', '282'], ['2002-01-19', '91.89', '272'], ['2002-01-20', '91.78', '225'], ['2002-01-21', '91.82', '241'], ['2002-01-22', '91.81', '246'], ['2002-01-23', '91.77', '222'], ['2002-01-24', '91.69', '212'], ['2002-01-25', '91.77', '234'], ['2002-01-26', '91.78', '242'], ['2002-01-27', '91.7', '202'], ['2002-01-28', '91.66', '172'], ['2002-01-29', '91.7', '217'], ['2002-01-30', '91.72', '222'], ['2002-01-31', '91.66', '204'], ['2002-02-01', '91.61', '193'], ['2002-02-02', '91.71', '224'], ['2002-02-03', '91.66', '206'], ['2002-02-04', '91.7', '220'], ['2002-02-05', '91.7', '220'], ['2002-02-06', '91.7', '220'], ['2002-02-07', '91.7', '220'], ['2002-02-08', '91.7', '220'], ['2002-02-09', '91.84', '248'], ['2002-02-10', '91.84', '261'], ['2002-02-11', '92.03', '430'], ['2002-02-12', '92.01', '366'], ['2002-02-13', '92.18', '460'], ['2002-02-14', '92.15', '422'], ['2002-02-15', '92.19', '480'], ['2002-02-16', '92.18', '422'], ['2002-02-17', '92.19', '426'], ['2002-02-18', '92.2', '430'], ['2002-02-19', '92.21', '436'], ['2002-02-20', '92.05', '424'], ['2002-02-21', '92.04', '426'], ['2002-02-22', '92.19', '530'], ['2002-02-23', '92.15', '420'], ['2002-02-24', '92.15', '430'], ['2002-02-25', '92.05', '380'], ['2002-02-26', '92.16', '430'], ['2002-02-27', '92.23', '490'], ['2002-02-28', '92.2', '458'], ['2002-03-01', '92.33833333333334', '625.0'], ['2002-03-02', '92.47666666666667', '792.0'], ['2002-03-03', '92.61500000000001', '959.0'], ['2002-03-04', '92.75333333333333', '1126.0'], ['2002-03-05', '92.89166666666667', '1293.0'], ['2002-03-06', '93.03', '1460'], ['2002-03-07', '92.9', '1450'], ['2002-03-08', '92.89', '1550'], ['2002-03-09', '93.01', '1930'], ['2002-03-10', '92.84', '1440'], ['2002-03-11', '92.81', '1550'], ['2002-03-12', '92.85', '1640'], ['2002-03-13', '92.88', '1600'], ['2002-03-14', '92.79', '1330'], ['2002-03-15', '92.54', '900'], ['2002-03-16', '92.24', '685'], ['2002-03-17', '92.33', '780'], ['2002-03-18', '92.39', '840'], ['2002-03-19', '92.35', '800'], ['2002-03-20', '92.13', '600'], ['2002-03-21', '92.2', '660'], ['2002-03-22', '92.04', '577'], ['2002-03-23', '92.03', '495'], ['2002-03-24', '92.03', '495'], ['2002-03-25', '92.04', '500'], ['2002-03-26', '91.97', '450'], ['2002-03-27', '92', '506'], ['2002-03-28', '91.97', '503.0'], ['2002-03-29', '91.94', '500'], ['2002-03-30', '92.01', '605'], ['2002-03-31', '91.96', '550'], ['2002-04-01', '92.03', '625'], ['2002-04-02', '92.09', '635'], ['2002-04-03', '92.17', '625'], ['2002-04-04', '92.16', '625'], ['2002-04-05', '92.13', '600'], ['2002-04-06', '92.12', '585'], ['2002-04-07', '92.14', '610'], ['2002-04-08', '92.17', '630'], ['2002-04-09', '92.17', '630'], ['2002-04-10', '92.2', '690'], ['2002-04-11', '92.16', '640'], ['2002-04-12', '92.17', '650'], ['2002-04-13', '92.14', '615'], ['2002-04-14', '92.04', '520'], ['2002-04-15', '92.13', '670'], ['2002-04-16', '92.13', '670'], ['2002-04-17', '92.13', '670'], ['2002-04-18', '92.13', '670'], ['2002-04-19', '92.13', '670'], ['2002-04-20', '91.83', '415'], ['2002-04-21', '92.12', '650'], ['2002-04-22', '92.09', '560'], ['2002-04-23', '92.23', '655'], ['2002-04-24', '92.27', '750'], ['2002-04-25', '92.14', '600'], ['2002-04-26', '92.27', '750'], ['2002-04-27', '92.33', '685'], ['2002-04-28', '92.31', '670'], ['2002-04-29', '92.17', '550'], ['2002-04-30', '92.19', '620'], ['2002-05-01', '92.34', '755'], ['2002-05-02', '92.36', '770'], ['2002-05-03', '92.05', '505'], ['2002-05-04', '92.4', '880'], ['2002-05-05', '92.32', '800'], ['2002-05-06', '92.27', '751.0'], ['2002-05-07', '92.22', '702.0'], ['2002-05-08', '92.16999999999999', '653.0'], ['2002-05-09', '92.11999999999999', '604.0'], ['2002-05-10', '92.07', '555'], ['2002-05-11', '92.27', '670'], ['2002-05-12', '92.45', '810'], ['2002-05-13', '92.22', '665'], ['2002-05-14', '92.37', '770'], ['2002-05-15', '92.19', '590'], ['2002-05-16', '91.99', '460'], ['2002-05-17', '92.04', '490'], ['2002-05-18', '92.18', '560'], ['2002-05-19', '92.18', '545'], ['2002-05-20', '92.13', '525'], ['2002-05-21', '92.13', '525'], ['2002-05-22', '92.13', '525'], ['2002-05-23', '92.13', '525'], ['2002-05-24', '92.01', '485'], ['2002-05-25', '91.94', '440'], ['2002-05-26', '91.95', '410'], ['2002-05-27', '91.98', '435'], ['2002-05-28', '91.97', '430'], ['2002-05-29', '92.01', '460'], ['2002-05-30', '92', '450'], ['2002-05-31', '92.01', '460'], ['2002-06-01', '92.05', '460'], ['2002-06-02', '92.14', '490'], ['2002-06-03', '92.29', '550'], ['2002-06-04', '92.34', '590'], ['2002-06-05', '92.22', '450'], ['2002-06-06', '92.28', '542'], ['2002-06-07', '92.33', '575'], ['2002-06-08', '92.4', '675'], ['2002-06-09', '92.45', '735'], ['2002-06-10', '92.29', '575'], ['2002-06-11', '92.4', '650'], ['2002-06-12', '92.39', '666'], ['2002-06-13', '92.35', '650'], ['2002-06-14', '92.45', '770'], ['2002-06-15', '92.41', '730'], ['2002-06-16', '92.33', '650'], ['2002-06-17', '92.23', '560'], ['2002-06-18', '92.33', '650'], ['2002-06-19', '92.4', '720'], ['2002-06-20', '92.33', '650'], ['2002-06-21', '92.4', '720'], ['2002-06-22', '92.46', '785'], ['2002-06-23', '92.48', '800'], ['2002-06-24', '92.27', '600'], ['2002-06-25', '92.3', '572'], ['2002-06-26', '92.4', '670'], ['2002-06-27', '92.56', '895'], ['2002-06-28', '92.48', '635'], ['2002-06-29', '92.44', '600'], ['2002-06-30', '92.52', '700'], ['2002-07-01', '92.48', '635'], ['2002-07-02', '92.41', '575'], ['2002-07-03', '92.44', '600'], ['2002-07-04', '92.61', '850'], ['2002-07-05', '93.5', '2700'], ['2002-07-06', '92.4', '880'], ['2002-07-07', '92.17', '580'], ['2002-07-08', '93.43', '2710'], ['2002-07-09', '93.29', '2780'], ['2002-07-10', '93.22', '2600'], ['2002-07-11', '93.24', '2550'], ['2002-07-12', '93.28', '2620'], ['2002-07-13', '93.28', '2670'], ['2002-07-14', '93.31', '2870'], ['2002-07-15', '93.33', '2930'], ['2002-07-16', '92.49', '1500'], ['2002-07-17', '92.02', '990'], ['2002-07-18', '92.34', '1300'], ['2002-07-19', '91.75', '780'], ['2002-07-20', '91.94', '770'], ['2002-07-21', '91.83', '695'], ['2002-07-22', '91.91', '760'], ['2002-07-23', '91.92', '770'], ['2002-07-24', '91.99', '830'], ['2002-07-25', '91.79', '668'], ['2002-07-26', '92.14', '880'], ['2002-07-27', '91.97', '738'], ['2002-07-28', '92.13', '620'], ['2002-07-29', '92.2', '945'], ['2002-07-30', '92.03', '758'], ['2002-07-31', '92.26', '1020'], ['2002-08-01', '91.98', '705'], ['2002-08-02', '92.06', '795'], ['2002-08-03', '92.05', '800'], ['2002-08-04', '91.82', '590'], ['2002-08-05', '92.11', '870'], ['2002-08-06', '92.18', '930'], ['2002-08-07', '92.02', '730'], ['2002-08-08', '91.91', '625'], ['2002-08-09', '91.99', '700'], ['2002-08-10', '92.03', '740'], ['2002-08-11', '92.27', '970'], ['2002-08-12', '92.03', '675'], ['2002-08-13', '91.98', '625'], ['2002-08-14', '91.88', '545'], ['2002-08-15', '92.06', '670'], ['2002-08-16', '92.08', '655'], ['2002-08-17', '92.18', '765'], ['2002-08-18', '92.03', '590'], ['2002-08-19', '92.12', '660'], ['2002-08-20', '92.2', '690'], ['2002-08-21', '92.17', '625'], ['2002-08-22', '92.21', '665'], ['2002-08-23', '92.22', '710'], ['2002-08-24', '92.18', '670'], ['2002-08-25', '92.42', '940'], ['2002-08-26', '91.96', '450'], ['2002-08-27', '92.18', '666'], ['2002-08-28', '92.13', '620'], ['2002-08-29', '92.14', '628'], ['2002-08-30', '92.07', '565'], ['2002-08-31', '92.03', '535'], ['2002-09-01', '91.99', '505'], ['2002-09-02', '92.16', '650'], ['2002-09-03', '92.16', '650'], ['2002-09-04', '92.05', '585'], ['2002-09-05', '91.98', '520'], ['2002-09-06', '92.02', '600'], ['2002-09-07', '92.14', '750'], ['2002-09-08', '91.66', '520'], ['2002-09-09', '91.55', '390'], ['2002-09-10', '91.67', '560'], ['2002-09-11', '91.55', '508'], ['2002-09-12', '91.35', '380'], ['2002-09-13', '91.11', '320'], ['2002-09-14', '91.47', '498'], ['2002-09-15', '91.37', '413'], ['2002-09-16', '91.53', '480'], ['2002-09-17', '91.61', '555'], ['2002-09-18', '91.62', '570'], ['2002-09-19', '91.79', '650'], ['2002-09-20', '91.85', '645'], ['2002-09-21', '91.78', '510'], ['2002-09-22', '91.54', '380'], ['2002-09-23', '91.81', '535'], ['2002-09-24', '91.74', '480'], ['2002-09-25', '91.71', '460'], ['2002-09-26', '91.81', '540'], ['2002-09-27', '91.82', '545'], ['2002-09-28', '91.75', '490'], ['2002-09-29', '91.9', '590'], ['2002-09-30', '91.92', '590'], ['2002-10-01', '92.27', '950'], ['2002-10-02', '92.14', '810'], ['2002-10-03', '92.08', '750'], ['2002-10-04', '92.06', '790'], ['2002-10-05', '91.85', '600'], ['2002-10-06', '92.12', '875'], ['2002-10-07', '92.12', '875'], ['2002-10-08', '92.12', '875'], ['2002-10-09', '92.28', '690'], ['2002-10-10', '92.28', '690'], ['2002-10-11', '92.28', '690'], ['2002-10-12', '91.97', '755'], ['2002-10-13', '92', '780'], ['2002-10-14', '92.04', '865'], ['2002-10-15', '92.04', '815'], ['2002-10-16', '92.05', '825'], ['2002-10-17', '92.07', '765'], ['2002-10-18', '92.19', '860'], ['2002-10-19', '92.15', '840'], ['2002-10-20', '91.93', '610'], ['2002-10-21', '91.83', '540'], ['2002-10-22', '91.84', '550'], ['2002-10-23', '91.51', '320'], ['2002-10-24', '91.57', '475'], ['2002-10-25', '91.65', '485'], ['2002-10-26', '91.58', '425'], ['2002-10-27', '91.51', '395'], ['2002-10-28', '91.51', '325'], ['2002-10-29', '91.71', '440'], ['2002-10-30', '91.7', '435'], ['2002-10-31', '91.74', '410'], ['2002-11-01', '91.8', '450'], ['2002-11-02', '91.65', '370'], ['2002-11-03', '91.75', '420'], ['2002-11-04', '91.62', '355'], ['2002-11-05', '91.66', '360'], ['2002-11-06', '91.66', '360'], ['2002-11-07', '91.77', '430'], ['2002-11-08', '91.76', '355'], ['2002-11-09', '91.73', '380'], ['2002-11-10', '91.65', '350'], ['2002-11-11', '91.64', '340'], ['2002-11-12', '91.63', '310'], ['2002-11-13', '91.65', '320'], ['2002-11-14', '91.65', '300'], ['2002-11-15', '91.61', '275'], ['2002-11-16', '91.55', '245'], ['2002-11-17', '91.55', '245'], ['2002-11-18', '91.61', '325'], ['2002-11-19', '91.62', '330'], ['2002-11-20', '91.68', '365'], ['2002-11-21', '91.58', '280'], ['2002-11-22', '91.62', '290'], ['2002-11-23', '91.67', '310'], ['2002-11-24', '91.63', '290'], ['2002-11-25', '91.58', '270'], ['2002-11-26', '91.58', '270'], ['2002-11-27', '91.58', '270'], ['2002-11-28', '91.54', '252'], ['2002-11-29', '91.48', '232'], ['2002-11-30', '91.43', '220'], ['2002-12-01', '91.34', '208'], ['2002-12-02', '91.31', '191'], ['2002-12-03', '91.36', '209'], ['2002-12-04', '91.32', '212'], ['2002-12-05', '91.27', '201'], ['2002-12-06', '91.29', '205'], ['2002-12-07', '91.31', '224'], ['2002-12-08', '91.27', '201'], ['2002-12-09', '91.3', '206'], ['2002-12-10', '91.26', '202'], ['2002-12-11', '91.24', '196'], ['2002-12-12', '91.25', '197'], ['2002-12-13', '91.25', '197'], ['2002-12-14', '91.22', '193'], ['2002-12-15', '91.26', '180'], ['2002-12-16', '91.27', '181'], ['2002-12-17', '91.24', '178'], ['2002-12-18', '91.2', '174'], ['2002-12-19', '91.17', '182'], ['2002-12-20', '91.18', '184'], ['2002-12-21', '91.22', '190'], ['2002-12-22', '91.21', '192'], ['2002-12-23', '91.23', '194'], ['2002-12-24', '91.27', '200'], ['2002-12-25', '91.25', '198'], ['2002-12-26', '91.25', '198'], ['2002-12-27', '91.25', '198'], ['2002-12-28', '91.25', '197'], ['2002-12-29', '91.28', '202'], ['2002-12-30', '91.28', '202'], ['2002-12-31', '91.3', '204']]
    print_graph2(data_list)

                                              

二、雷達圖

# -*- coding:UTF-8 -*-
import numpy as np
import matplotlib.pyplot as plt

# 中文和負號的正常顯示
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False

#使用ggplot的風格繪圖
plt.style.use('ggplot')

#構造數據
values = [3.2,2.1,3.5,2.8,3,4,40]
values_1 = [10,10,827.46,231.96,10,33.05,10]
values_2 = [10,10,832.81,204.95,10,33.39,10]
values_3 = [0,0,838.09,194.80,0,33.70,0]
values_4 = [0,0,843.68,193.95,0,33.86,0]
values_5 = [0,0,849.79,189.98,0,33.98,0]
values_6 = [0,0,854.76,175.13,0,34.06,0]
values_7 = [0,0,854.76,175.13,0,34.06,0]
data_list = [[10,10,827.46,231.96,10,33.05,10],
             [10,10,832.81,204.95,10,33.39,10],
             [20,20,838.09,194.80,10,33.70,0],
             [20,10,843.68,193.95,30,33.86,20],
             [10,20,849.79,189.98,20,33.98,20],
             [20,10,854.76,175.13,20,34.06,20],
             [10,20,854.76,175.13,10,34.06,10]]

# 數據歸一化處理方法一
for j in range(len(data_list[0])):
    lie = [data_list[i][j] for i in range(len(data_list))]
    max_lie, min_lie = max(lie), min(lie)
    for t in range(len(data_list)):
        data_list[t][j] = (data_list[t][j] - min_lie) / (max_lie - min_lie)

feature = ["洪災損失", "灌溉效益", "發電效益", "航運效益", "生態環境效益", "泥沙減淤量", "安全度"]


N = len(data_list[0])

#設置雷達圖的角度,用於平分切開一個平面
angles = np.linspace(0,2*np.pi,N,endpoint=False)
# 顏色
color_list = ['r', 'g', 'b', 'w', 'y', 'p', 'o']
#使雷達圖封閉起來
for i in range(len(data_list)):
    data_list[i] = np.concatenate((data_list[i],[data_list[i][0]]))
angles = np.concatenate((angles,[angles[0]]))

#繪圖
fig = plt.figure()
#設置爲極座標格式
ax = fig.add_subplot(111, polar=True)
#繪製折線圖
for i in range(len(data_list)):
    ax.plot(angles, data_list[i], '.-', linewidth=1, label='活動前')
    ax.fill(angles, data_list[i], color_list[i], alpha=0.15)

#添加每個特質的標籤
ax.set_thetagrids(angles*180/np.pi,feature)
#設置極軸範圍
ax.set_ylim(-1,1)
#添加標題
plt.title('雷達圖')
#增加網格紙
ax.grid(True)
plt.show()

             

 

三、散點圖

1、簡單的實例

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# 保證圖片在瀏覽器內正常顯示

# 10個點
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
plt.scatter(x, y)
plt.show()

                                                     

2、三組數據在一張散點圖上

import matplotlib.pyplot as plt
import numpy as np


# 15個點
N = 10
x1 = np.random.rand(N)
y1 = np.random.rand(N)
x2 = np.random.rand(N)
y2 = np.random.rand(N)
x3 = np.random.rand(N)
y3 = np.random.rand(N)
plt.scatter(x1, y1, marker='o', label="circle")
plt.scatter(x2, y2, marker='^', label="triangle")
plt.scatter(x3, y3, marker='*', label="*")
plt.legend(loc='best')
plt.show()

                                                     

未完待續!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章