Python使用matplotlib绘图示例

   Python中可以使用matplotlib来实现与MATLAB一样的绘图功能,十分强大,现在简单的一个演示。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : Peidong
# @Site    : 
# @File    : plt.py
# @Software: PyCharm
# 绘制三角函数
import matplotlib.pyplot as plt
import numpy as np

# 确定自变量范围
X = np.linspace(-np.pi, np.pi, endpoint=True)
# 给定两个不同的函数
C, S = np.cos(X), np.sin(X)
#这里用到了Matplotlib和numpy模块,linspace在(−π,π)之间分成共256个小段,
#并把这256个值赋予X。C,S分别是cosine和sine值(X,C,S都是numpy数组)
# 绘图
plt.figure(1)
# 设置标题
plt.title("eg1")
plt.plot(X, C)
plt.plot(X, S)
# 显示图像
# plt.show()

# 设置颜色粗细及标签
plt.figure(2)
plt.title("eg2")
plt.plot(X, C, 'b-', lw=2.5, label="cosine")
plt.plot(X, S, 'r-', lw=2.5, label="sine")
# 设置标签所在位置
plt.legend(loc='upper left')
#这里`b-`是`color="blue",linestyle="-"`的简写形式
#`lw`=`linewidth`,两种写法都是合理的,但是`b-`这种形式明显更加简洁,也很好理解

# 调整坐标轴
plt.figure(3)

# 设置两个子图
f = plt.subplot(211)
g = plt.subplot(212)
plt.title("eg3")

# 选择子图
plt.sca(f)
plt.plot(X, C, 'b-', lw=2.5, label="cosine")

# 设置标签所在位置
plt.legend(loc='upper left')

# 选择子图
plt.sca(g)
plt.plot(X, S, 'r-', lw=2.5, label="sine")

# 设置标签所在位置
plt.legend(loc='upper left')

# 设置子图2的坐标范围
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.ylim(C.min()*1.1, C.max()*1.1)

# 调整坐标标度值
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi])
plt.yticks([-1, 0, 1])

# 进一步调整坐标标度值
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
           [r'$-\pi$', r'$-\pi/2$',  r'$0$', r'$\pi/2$',r'$+\pi$'])

# 调整坐标轴位置
ax=plt.gca()
ax.spines['right'].set_color('none') #先把右边和上边的边界设置为不可见
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0)) #然后把下边界和左边界移动到0点
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))

# 设置特殊点注释
t = 1*np.pi/3

#画出需要标注的点
plt.plot([t, t], [0,np.sin(t)], color='red', linewidth=2.5, linestyle="--")
plt.scatter([t, ], [np.sin(t), ], 50, color='red')
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
         xy=(t, np.sin(t)), xycoords='data',
         xytext=(+10, +30), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

# 修改坐标轴刻度大小
for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(16)
    label.set_bbox(dict(facecolor='w',edgecolor='None',alpha=0.4))

# 显示图像
plt.show()

示例图如下所示:

演示图一:基本绘制

Python使用matplotlib绘图示例

演示图二:打标签调整相关参数

Python使用matplotlib绘图示例

演示图三:自定义图像形式

Python使用matplotlib绘图示例