matplotlib必备图表绘制

官网

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()

matplotlib必备图表绘制_第1张图片

直方图

用于表示数据出现频率的图形,这里以正态分布为例

参数 意义
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)

matplotlib必备图表绘制_第2张图片

散点图

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指定散点的大小

matplotlib必备图表绘制_第3张图片

热力相关图

参数 描述
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')

matplotlib必备图表绘制_第4张图片

柱形图

参数 描述
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') 

matplotlib必备图表绘制_第5张图片

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()

matplotlib必备图表绘制_第6张图片

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')  

matplotlib必备图表绘制_第7张图片

你可能感兴趣的:(python,数学建模,数据可视化,python,matplotlib,可视化)