官網
http://matplotlib.org/
簡單操作
我們以matplotlab包里面的pyplot 為例介紹,這個模塊仿照matlab中的繪圖,對有matlab繪圖經驗的同學很友好
導包
import matplotlib.pyplot as plt
面板與子圖
面板(figure·):matplotlib中的影像都是位于figure物件中,
子圖:一個figure影像中可以建立多個subplot物件用于繪制影像
subplot
subplot需要三個引數,前面兩個用于指定整個圖的行列數,第三個說明下面的繪畫是在哪一個子圖完成的
plt.subplot(2, 2, 1)
plt.subplot(221)
以上面代碼為例,2和2表示有4個子圖,2*2的排列,此時是在第一個子圖上進行繪制,如果三個引數均小于10,引數還可以合并為221
線形圖
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
x1 = np.random.randint(-3, 3, 20)
x2 = np.random.randint(-3, 3, 20)
x3 = np.random.randint(-3, 3, 20)
x4 = np.random.randint(-3, 3, 20)
y1 = np.sin(x1)
y2 = np.sin(x2)
y3 = np.sin(x3)
y4 = np.sin(x4)
plt.figure(1)
plt.subplot(2, 2, 1)
plt.plot(x1, y1, 'rH')
plt.title('x1')
plt.subplot(2, 2, 2)
plt.plot(x2, y2, 'bD')
plt.title('x2')
plt.subplot(2, 2, 3)
plt.plot(x3, y3, 'go')
plt.title('x3')
plt.subplot(2, 2, 4)
plt.plot(x4, y4, 'k*')
plt.title('x4')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.show()

直方圖
用于表示資料出現頻率的圖形,這里以正態分布為例
| 引數 | 意義 |
|---|---|
| normed | 是否將資料歸一化,默認為0,不歸一化 |
| bins | 圖形長方形的數目,默認為10 |
| facecolor | 長方形顏色 |
| edgecolor | 長方形邊框顏色 |
| alpha | 透明度 |
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
plt.figure(1)
x = np.random.randn(10000)
plt.hist(x,bins=20,facecolor='blue',edgecolor='black',alpha=0.7)

散點圖
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x,y,c='r',lw=2)
plt.show()
c指定散點的顏色,lw指定散點的大小

熱力相關圖
| 引數 | 描述 |
|---|---|
| linewidth | 矩陣之間的間隔 |
| vmax,vmin | 最大值最小值的顯示值,默認不顯示 |
| cmap | 顏色物件,即影像顯示的顏色型別 |
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
plt.figure(1)
plt.subplot(221)
data = np.random.randn(10,10)
sns.heatmap(data,linewidths=0.1,cmap='RdBu_r',vmin=-1,vmax=1)
plt.subplot(222)
data = np.random.randn(10,10)
sns.heatmap(data,linewidths=0.1,cmap='rainbow',vmin=-1,vmax=1)
plt.subplot(223)
data = np.random.randn(10,10)
sns.heatmap(data,cmap='rainbow',vmin=-1,vmax=1)
plt.subplot(224)
data = np.random.randn(10,10)
sns.heatmap(data,linewidths=0.1,cmap='rainbow')

柱形圖
| 引數 | 描述 |
|---|---|
| alpha | 透明度 |
| label | 圖形的標簽 |
| width | 柱形的寬度 |
| color | 柱形的顏色 |
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
plt.figure(1)
x_index = np.arange(5)
x_data = ('A', 'B', 'C', 'D', 'E')
y_data = (12, 23, 34, 45, 56)
bar_width = 0.5
plt.bar(x_index, y_data, width=bar_width, alpha=0.4, color='b', label='data')

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
plt.figure(1)
x_index = np.arange(5)
x_data = ('A', 'B', 'C', 'D', 'E')
y1_data = (12, 23, 34, 45, 56)
y2_data = (56, 45, 34, 23, 12)
bar_width = 0.3
r1 = plt.bar(x_index, y1_data, width=bar_width, alpha=0.4, color='b', label='data1')
r2 = plt.bar(x_index + bar_width, y2_data, width=bar_width, alpha=0.5, color='r',
label='data2')
plt.xticks(x_index+bar_width/2, x_data) # 指定x軸標簽的位置
plt.legend() # 加上標簽
plt.tight_layout()

3D圖
繪制擁有三個維度的影像
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
fig = plt.figure(1)
ax = fig.add_subplot(111, projection='3d') # 繪制三維圖
x = np.arange(-3, 3, 0.2)
y = np.arange(-3, 3, 0.2)
x, y = np.meshgrid(x, y)
Z = x * np.exp(-x ** 2 - y ** 2)
ax.plot_surface(x, y, Z, rstride=2, cstride=1, cmap=plt.cm.coolwarm, alpha=0.8)
ax.set_xlabel('X_index')
ax.set_ylabel('Y_index')
ax.set_zlabel('Z_index')

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/260060.html
標籤:python
上一篇:爬蟲之scrapy中間件的使用
下一篇:Python之qq自動發訊息
