matplotlib库

标签: python

Python画图主要用到matplotlib这个库,具体来说是pylab和pyplot这两个子库。下面主要以pyplot库为基础,介绍柱状图、散点图、等高线图、伪彩图、3D图像、图中图和直线图。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# -*- coding: utf-8 -*-
"""
Created on Mon Jun 17 12:49:47 2019
@author: xiaoxiaoke
"""
 
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import cv2
 
#1、柱状图
n=1024
X=np.random.normal(0,10,n)
Y=np.random.normal(0,10,n)
 
fig=plt.figure
plt.subplot(221)
plt.title("Bar")
plt.bar(X,Y)
plt.xlim()
plt.ylim(0,30)
 
#2、散点图
plt.subplot(222)
plt.title("scatter")
colorT=np.arctan2(Y,X)
plt.scatter(X,Y,s=75,c=colorT,alpha=0.5)
 
plt.xticks(())
plt.yticks(())
plt.show()
 
 
#3、等高线图像
def f(x,y):
    # the height function
    return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2)
 
n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)
X,Y = np.meshgrid(x, y)
 
plt.subplot(223)
plt.title("contourf")
C = plt.contour(X, Y, f(X, Y), 8, colors='black', linewidth=.5)
plt.contourf(X, Y, f(X, Y), 8, alpha=.75, cmap=plt.cm.hot)
plt.clabel(C, inline=True, fontsize=10)
 
 
#4、显示图像
plt.subplot(224)
plt.title("imshow")
a=np.array([1,2,3,4,5,6,7,8,9]).reshape(3,3)
plt.imshow(a,interpolation='nearest',cmap='bone')
plt.colorbar(shrink=0.9)
 
 
#5、3D图像
fig5 = plt.figure()
plt.title("Axes3D")
ax1=Axes3D(fig5)
X=np.arange(-4,4,0.25)
Y=np.arange(-4,4,0.25)
X,Y=np.meshgrid(X,Y)
Z=np.sqrt(X**2+Y**2)
ax1.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
 
#6、图中图
fig6=plt.figure()
x6=[1,2,3,4,5,6,7]
y6=[1,3,4,2,5,8,4]
 #大图
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
ax1 = fig6.add_axes([left, bottom, width, height])
ax1.plot(x6, y6, 'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('title')
 #小图
left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
ax2 = fig6.add_axes([left, bottom, width, height])
ax2.plot(y, x, 'b')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title inside 1')
 
#7、直线图和legend的使用
plt.figure(num=4,figsize=(8,5))
x=np.linspace(-1,1,100)
y=2*x+1
y1=x*x+3
plt.title("Legend")
plt.plot(x,y,color='green',linewidth=2.0,linestyle='--')
plt.plot(x,y1,color='red',linewidth=2.0,linestyle='--')
plt.text(0.5, 0, 'y1=x*x+3', fontdict={'size': 20, 'color':  'red'})
plt.xlabel("xvalue")
plt.ylabel("Yvalue")
plt.legend(["green","red"],loc=4)
 
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
 
fig = plt.figure()
ax = fig.add_subplot(1,1,1,projection='3d')  # 一行一列第一个
X = np.arange(1, 10, 1)
Y = np.arange(1, 10, 1)
X,Y = np.meshgrid(X, Y)  # 将坐标向量变为坐标矩阵,列为x的长度,行为y的长度
Z = 3*X + 2*Y + 30
 
# 构建平面
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, linewidth=0, antialiased=True)
# 设置坐标轴
ax.set_xlabel("x-label", color='r')
ax.set_ylabel("y-label", color='g')
ax.set_zlabel("z-label", color='b')
ax.set_zlim3d(0, 100) 
 
# 图例
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.savefig("d3_plane.png")
plt.show()

常用命令:

cla()   # Clear axis即清除当前图形中的当前活动轴。其他轴不受影响。
clf()   # Clear figure清除所有轴,但是窗口打开,这样它可以被重复使用。
close() # Close a figure window
原文链接:加载失败,请重新获取