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

在这里插入图片描述

直方图

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

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

在这里插入图片描述

posted @ 2021-02-14 22:20  沃特艾文儿  阅读(21)  评论(0)    收藏  举报  来源