python60行绘图程序_Python机器学习(六十七)Matplotlib 图形绘制

本章我们将从一个简单的图形开始,演示各种绘图方法,逐步丰富图形,使其更美观。

使用默认属性绘图

Matplotlib中,绘制图形时,可以设置一些属性,包括:图形大小、dpi、行宽、颜色和样式、坐标轴、网格属性、文本和字体属性等等。如果不设置,则将使用属性的默认值。

示例

使用默认设置,绘制正弦函数和余弦函数的曲线图。

#导入numpy库与matplotlib.pyplot库

importnumpy as npimportmatplotlib.pyplot as plt#准备数据

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)

C, S=np.cos(X), np.sin(X)#绘制曲线

plt.plot(X, C)

plt.plot(X, S)#显示图像

plt.show()

绘制图形:

mat2-1.png

属性设置

在下面的示例中,我们显式地列出了所有影响绘图的属性及其默认值。

示例

#导入numpy库与matplotlib.pyplot库

importnumpy as npimportmatplotlib.pyplot as plt#创建一个大小为8x6英寸的图形,每英寸80个点

plt.figure(figsize=(8, 6), dpi=80)#从1x1的网格创建一个新的子图

plt.subplot(1, 1, 1)

X= np.linspace(-np.pi, np.pi, 256, endpoint=True)

C, S=np.cos(X), np.sin(X)#用宽度为1(像素)的蓝色连续线绘制余弦曲线

plt.plot(X, C, color="blue", linewidth=1.0, linestyle="-")#用宽度为1(像素)的绿色连续线绘制正弦曲线

plt.plot(X, S, color="green", linewidth=1.0, linestyle="-")#设置 x 限制

plt.xlim(-4.0, 4.0)#设置 x ticks

plt.xticks(np.linspace(-4, 4, 9, endpoint=True))#设置 y 限制

plt.ylim(-1.0, 1.0)#设置 y ticks

plt.yticks(np.linspace(-1, 1, 5, endpoint=True))#保存图形,使用72点每英寸#plt.savefig("exercise_2.png", dpi=72)

#在屏幕上显示结果

plt.show()

绘制图形:

mat3_1.png

改变颜色和线宽

我们想让cos用蓝色,sin用红色,它们都用一条更粗的线绘制,同时稍微改变图形大小。

...

plt.figure(figsize=(10, 6), dpi=80)

plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-")

plt.plot(X, S, color="red", linewidth=2.5, linestyle="-")

...

改变颜色和线宽

我们想让cos用蓝色,sin用红色,它们都用一条更粗的线绘制,同时稍微改变图形大小。

...

plt.figure(figsize=(10, 6), dpi=80)

plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-")

plt.plot(X, S, color="red", linewidth=2.5, linestyle="-")

...

绘制图形:

mat3_2.png

设定界限

这个图形的边缘限制有点太紧了,我们想留出一些空间,以便清楚地看到所有的数据点。

...

plt.xlim(X.min()* 1.1, X.max() * 1.1)

plt.ylim(C.min()* 1.1, C.max() * 1.1)

...

绘制图形:

mat3_3.png

设置刻度

坐标轴刻度可以设置,我们把坐标轴刻度设置为`(+/-π, +/-π/2)。

绘制图形:

Matplotlib 图形绘制3

设置刻度

坐标轴刻度可以设置,我们把坐标轴刻度设置为`(+/-π, +/-π/2)。

绘制图形:

mat3_4.png

设置刻度标签

上面的坐标轴刻度都是数字,可以设置刻度标签。

...

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

plt.yticks([-1, 0, +1],

[r'$-1$', r'$0$', r'$+1$'])

...

绘制图形:

mat3_5.png

移动图形(相对于坐标轴)

可以相对于坐标轴移动图像。

...

ax= plt.gca() #gca 表示 'get current axis', 获取当前坐标轴

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

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

...

绘制图形:

mat3_6.png

添加图例

图例是位于图形一角或一侧的说明,解释各种符号和颜色的意义,有助于更好地理解图形。

...

plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")

plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")

plt.legend(loc='upper left')

...

绘制图形:

mat3_7.png

添加注解

可以使用annotate命令对一些点添加注解。在x=2π/3处, 画一条虚线,标出sin与cos曲线上对应的点。注解支持latex格式。

...

t= 2 * np.pi / 3plt.plot([t, t], [0, np.cos(t)], color='blue', linewidth=2.5, linestyle="--") #画虚线

plt.scatter([t, ], [np.cos(t), ], 50, color='blue') #画点

#添加注解

plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',

xy=(t, np.cos(t)), xycoords='data',

xytext=(-90, -50), textcoords='offset points', fontsize=16,

arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

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

...

绘制图形:

mat3_8.png

细节微调

由于有蓝色和红色的线,现在几乎看不到刻度标签。我们调整它们的字体和颜色,让它们看起来更清晰。

...for label in ax.get_xticklabels() +ax.get_yticklabels():

label.set_fontsize(16) #调整字体大小

label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65)) #调整颜色

...

绘制图形:

mat3_9.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值