matplotlib繪圖基礎

記錄matplotlib的基本操作學習筆記,需要時可以直接拷貝。

1. 繪製曲線

用numpy的linspace() 函數獲取一組數據x,用numpy的cos和sin函數獲得y值,然後用matplotlib.pyplot畫圖。可以使用rcParams設置參數。

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

x = np.linspace(0, 5, 50)
y_cos = np.cos(x)
y_sin = np.sin(x)

#繪製曲線
plt.figure()
plt.plot(x, y_cos)
plt.plot(x, y_sin)

plt.xlabel('x')
plt.ylabel('y')
plt.title('title')
plt.show()


2. 繪製分塊圖

在同一個窗口上畫多個圖形,調用subplot實現。

#繪製分塊圖
plt.subplot(1, 2, 1)
plt.plot(x, y_cos, 'r--')
plt.title('cos')
plt.subplot(1, 2, 2)
plt.plot(x, y_sin, 'b-')
plt.title('sin')
plt.show()


3. 散點圖

make_blobs方法用來生成聚類算法的測試數據。三組不同的數據,用三個plot實現。

#散點圖
from sklearn.datasets import make_blobs
D = make_blobs(n_samples=100, n_features=2, centers=3, random_state=7)
groups = D[1]
coordinates = D[0]
plt.plot(coordinates[groups==0,0],coordinates[groups==0,1],'ys',label='group 0')
plt.plot(coordinates[groups==1,0],coordinates[groups==1,1],'m*',label='group 1')
plt.plot(coordinates[groups==2,0],coordinates[groups==2,1],'rD',label='group 2')
plt.ylim(-2, 10)
plt.yticks([10, 6, 2, -2])
plt.xticks([-15, -5, 5, -15])
plt.grid()
plt.annotate('Squares', (-12, 2.5))
plt.annotate('Stars', (0, 6))
plt.annotate('Diamonds', (10, 3))
plt.legend(loc='lower left', numpoints=1)
plt.show()


4. 直方圖

random.normal()方法,用來產生高斯分佈的隨機數。

#直方圖
x = np.random.normal(loc=0.0, scale=1.0, size=500)
z = np.random.normal(loc=3.0, scale=1.0, size=500)
plt.hist(np.column_stack((x,z)), bins=20, histtype='bar', color=['c','b'],stacked=True)
plt.grid()
plt.show()


4. 柱狀圖

#柱狀圖
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()
average = np.mean(iris.data, axis=0)
std = np.std(iris.data, axis=0)
range_ = range(np.shape(iris.data)[1])
plt.subplot(1, 2, 1)
plt.title('Horizontal bars')
plt.barh(range_, average, color="r",xerr=std, alpha=0.4,align="center")
plt.subplot(1,2,2)
plt.title("Vertical bars")
plt.bar(range_, average, color="b", yerr=std, alpha=0.4, align="center")
plt.xticks(range_, range_)
plt.show()


5.用pandas的DataFrame繪圖

將數據放到DataFrame中,就可以用DataFrame來畫圖。

#pandas的圖形示例
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
groups = list(iris.target)
iris_df['groups']=pd.Series([iris.target_names[k] for k in groups])

boxplots = iris_df.boxplot(return_type='axes')
plt.show()


boxplots = iris_df.boxplot(column='sepal length (cm)',by='groups',return_type='axes')
plt.show()


densityplot = iris_df.plot(kind='density')
plt.show()


single_distribution = iris_df['petal width (cm)'].plot(kind='hist', alpha=0.5)
plt.show()


colors_palette = {0:'red', 1:'yellow', 2:'blue'}
colors = [colors_palette[c] for c in groups]
simple_scatterplot = iris_df.plot(kind='scatter', x=0, y=1, c=colors)
plt.show()


hexbin = iris_df.plot(kind='hexbin', x=0, y=1, gridsize=10)
plt.show()


from pandas.tools.plotting import scatter_matrix
colors_palette = {0:'red', 1:'yellow', 2:'blue'}
colors = [colors_palette[c] for c in groups]
matrix_of_scatterplots = scatter_matrix(iris_df, alpha=0.2, figsize=(6,6), diagonal='kde')
plt.show()




發佈了96 篇原創文章 · 獲贊 26 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章