python數據分析 - 各種圖

官方文檔:
https://matplotlib.org/gallery/index.html

https://plot.ly/python/

1.繪製了折線圖(plt.plot)
2.設置了圖片的大小(plt.figure)
3.實現了圖片的保存(plt.savefig)
4.設置了xy軸上的刻度和字符串(xticks)
5.解決了刻度稀疏和密集的問題(xticks)
6.設置了標題,xy軸的lable(title,xlabel,ylabel)
7.設置了字體(font_manager. fontProperties)
8.在一個圖上繪製多個圖形(plt多次plot即可)
9.增加子畫布,分開顯示圖像(plt.subplots)
10.爲不同的圖形添加圖例

對比常用統計圖

折線圖:以折線的上升或下降來表示統計數量的增減變化的統計圖
特點:能夠顯示數據的變化趨勢,反映事物的變化情況。(變化)

直方圖:由一系列高度不等的縱向條紋或線段表示數據分佈的情況。
一般用橫軸表示數據範圍,縱軸表示分佈情況。
特點:繪製,連續性的數據展示一組或者多組數據的分佈狀況(統計)

條形圖:排列在工作表的列或行中的數據可以繪製到條形圖中。
特點:繪製連離散的數據,能夠一眼看出各個數據的大小,比較數據之間的差別。(統計)

散點圖:用兩組數據構成多個座標點,考察座標點的分佈,判斷兩變量
之間是否存在某種關聯或總結座標點的分佈模式。
特點:判斷變量之間是否存在數量關聯趨勢,展示離羣點(分佈規律)

一 折線圖

1.1

import matplotlib.pyplot as plt

#折線圖:通過傳入的數據,在二維座標系下形成點,再將這些點連接成線
x = [1,5,4] #[x軸開始, x軸結束, x]
y = [5,8,6] #[y軸開始, y軸結束, y]
plt.plot(x,y) #三個節點[1, 5] [5, 8] [4, 6]
plt.show()

在這裏插入圖片描述

1.2

import matplotlib.pyplot as plt

#創建圖像
#figsize:指定圖的長寬
#dpi:圖像的清晰度
#返回fig對象
plt.figure(figsize=(10,8),dpi=100)
x= range(2,25,2) #2到25,間距爲2 (有時候顯示並不會按照2進行分割)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
plt.plot(x,y)
plt.savefig("a.png") #存爲圖片
#設置x軸刻度
plt.xticks(x[::2])
#設置y軸刻度
plt.yticks(range(min(y),max(y)+1,2))
plt.show()

在這裏插入圖片描述

1.3

import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

#字體管理器加載中文字體
my_font = font_manager.FontProperties(fname="simhei.ttf",size='larger')

plt.figure(figsize=(20,8),dpi=100)
x = range(120)
a = [random.randint(20,35) for i in range(120)]
plt.plot(x,a)

#實際的刻度數據:10點xx分
_xticks=["10點{}分".format(i) for i in x if i<60]
_xticks +=["11點{}分".format(i-60) for i in x if i>=60]
print(_xticks)
plt.xticks(x[::4],_xticks[::4],rotation=45,font_properties=my_font)
plt.show()

在這裏插入圖片描述

1.4

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

plt.figure(figsize=(20,8),dpi=100)
x = range(120)
a = [random.randint(20,35) for i in range(120)]
plt.plot(x,a)

#實際的刻度數據:10點xx分
_xticks=["10點{}分".format(i) for i in x if i<60]
_xticks +=["11點{}分".format(i-60) for i in x if i>=60]
print(_xticks)
plt.xticks(x[::4],_xticks[::4],rotation=45)

#添加描述信息
plt.xlabel("時間")
plt.ylabel("溫度")
plt.title("溫度隨時間變化圖示")

plt.show()

在這裏插入圖片描述

1.5

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

plt.figure(figsize=(20,8),dpi=100)
x = range(11,31)
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

plt.plot(x,y)

_xticks=["{}歲".format(i) for i in x]

plt.xticks(x,_xticks)
plt.xlabel("年齡")
plt.ylabel("朋友個數")
plt.title("交朋友的個數隨年齡變化圖示")
plt.show()

在這裏插入圖片描述

1.6
在這裏插入圖片描述
在這裏插入圖片描述

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

plt.figure(figsize=(20,8),dpi=100)
x = range(11,31)
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

plt.plot(x,a,color='r',linewidth=4,alpha=0.2,linestyle=":",label="我")
plt.plot(x,b,color='g',linestyle="-.",label="同桌")

_xticks=["{}歲".format(i) for i in x]

plt.xticks(x,_xticks)
plt.xlabel("年齡")
plt.ylabel("朋友個數")
plt.title("交朋友的個數隨年齡變化圖示")

plt.legend(loc=0)

plt.show()

在這裏插入圖片描述

1.7

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

def set_ax(ax):
    plt.sca(ax)
    _xticks = ["{}歲".format(i) for i in x]
    plt.xticks(x, _xticks)
    plt.xlabel("年齡")
    plt.ylabel("朋友個數")
    plt.title("交朋友的個數隨年齡變化圖示")
    plt.legend(loc=0)
# 創建子圖像(可以在一個畫板上創建多個圖像)
# 開啓子畫布後,plt會默認將最後一個axes作爲基準
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)
print(axes)
x = range(11, 31)
a = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
b = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]

axes[0].plot(x, a, color='r', linewidth=4, alpha=0.2, linestyle=":", label="我")
axes[1].plot(x, b, color='g', linestyle="-.", label="同桌")

set_ax(axes[0])
set_ax(axes[1])
fig.text(0.4, 0.5, '北山瓔珞', fontsize=40, color='gray', alpha=0.4)
plt.show()

在這裏插入圖片描述

1.8

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

x = range(31)
a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

plt.plot(x,a)
plt.plot(x,b)
plt.show()

在這裏插入圖片描述

1.9 散點圖

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

plt.figure(figsize=(20,8),dpi=100)
x = range(31)
a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

x1=range(1,32)
x2 = range(51,82)
#繪製散點圖
plt.scatter(x1,a)
plt.scatter(x2,b)

_x = list(range(1,32))+list(range(51,82))
_xticks=["3月{}日".format(i) for i in x1]
_xticks +=["10月{}日".format(i) for i in x1]
plt.xticks(_x[::3],_xticks[::3],rotation=90)
plt.show()

在這裏插入圖片描述

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