1 要点:

=====

1.1 由浅入深讲解matplotlib画矩形(正方形和长方形),多种方法实现,由简单到复杂,讲解和注释详细,适合收藏。

1.2 正方形可以实现,那么长方形也就可以实现了。

1.3 通过此方法,熟悉matplotlib作图相关知识和python编程思维。

matplotlib 绘制线条图(6种方法用matplotlib实现矩形)(1)

2 方法一

======

2.1 Line2D法:画4条边的直线

2.2 代码

from matplotlib.lines import Line2D import matplotlib.pyplot as plt figure, ax = plt.subplots() # 4条line的坐标点(x,y) line1 = [(1, 1), (2, 1)] line2 = [(2, 1), (2, 2)] line3 = [(2, 2), (1, 2)] line4 = [(1, 2), (1, 1)] #打包法 (line1_xs, line1_ys) = zip(*line1) (line2_xs, line2_ys) = zip(*line2) (line3_xs, line3_ys) = zip(*line3) (line4_xs, line4_ys) = zip(*line4) # 创建4条线,并添加 ax.add_line(Line2D(line1_xs, line1_ys, linewidth=1, color='b')) ax.add_line(Line2D(line2_xs, line2_ys, linewidth=1, color='r')) ax.add_line(Line2D(line3_xs, line3_ys, linewidth=1, color='k')) ax.add_line(Line2D(line4_xs, line4_ys, linewidth=1, color='y')) # 展示 plt.plot() plt.show()

2.3 效果图

matplotlib 绘制线条图(6种方法用matplotlib实现矩形)(2)

3 方法二

=======

3.1 plot坐标点法

3.2 代码

import matplotlib.pyplot as plt #fig,ax = plt.subplots() #可以注释掉 #坐标点法 x=[1,2,2,1,1] y=[1,1,2,2,1] plt.plot(x,y) #等同于上面 #plt.plot([1,2,2,1,1],[1,1,2,2,1]) plt.show()

3.3 效果图:省略,四条边默认颜色:b=blue

4 方法三

=======

4.1 patches(mpatches) rectangle法

4.2 代码

import matplotlib.pyplot as plt import matplotlib.patches as patches fig = plt.figure() ax = fig.add_subplot(111) rect=patches.Rectangle( (1, 1), # (x,y) 1, # width 1, # height color='g', #边的颜色 fill=False #是否填充,默认填充 ) ax.add_patch(rect) ''' #等同于上面 ax.add_patch( patches.Rectangle( (1, 1), # (x,y) 1, # width 1, # height ) ) ''' #如果坐标点x和y不是(0,0),那么需要下面这个,否则不显示 # 设置图形显示的时候x轴和y轴等比例 ax.axis("equal") plt.show() ''' #另外一种 import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as mpatches fig, ax = plt.subplots() # 矩形的左下角 #xy = np.array([1, 1]) xy=(1,1) # 第二个参数和第三个参数是先长后宽 rect = mpatches.Rectangle(xy, 2, 2, color= "g") ax.add_patch(rect) # 设置图形显示的时候x轴和y轴等比例 ax.axis("equal") plt.show() '''

4.3 效果图:省略

5 方法四

=======

5.1 plt.Rectangle法

matplotlib 绘制线条图(6种方法用matplotlib实现矩形)(3)

5.2 代码:

import matplotlib.pyplot as plt ''' fig = plt.figure() ax = fig.add_subplot(111) ''' #等同于上面这个 fig,ax = plt.subplots() rect = plt.Rectangle((1,1),2,2,edgecolor='g',fill=False) ax.add_patch(rect) #如果坐标点x和y不是(0,0),那么需要下面这个,否则不显示 # 设置图形显示的时候x轴和y轴等比例 ax.axis("equal") plt.show()

6 方法五

======

6.1 plt.gca().add_patch(plt.Rectangle)法,最佳方法。

6.2 代码

import matplotlib.pyplot as plt #plt.gca()获得,分别表示Get Current Axes #plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax #有时候会写成 #ax = plt.gca() #不能设置颜色和是否填充颜色等 plt.gca().add_patch(plt.Rectangle((1,1),2,2)) #如果坐标点x和y不是(0,0),那么需要下面这个,否则不显示 # 设置图形显示的时候x轴和y轴等比例 plt.gca().axis("equal") #ax.axis("equal") plt.show()

7 方法六

======

7.1 高级版,点击鼠标,获取两点自动生成矩形

7.2 来源

https://blog.csdn.net/rumswell/article/details/8010166?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control

7.3 代码

import matplotlib.pyplot as plt from matplotlib.patches import Rectangle class Annotate(object): def __init__(self): self.ax = plt.gca() self.rect = Rectangle((0,0), 1, 1) self.x0 = None self.y0 = None self.x1 = None self.y1 = None self.ax.add_patch(self.rect) self.ax.figure.canvas.mpl_connect('button_press_event', self.on_press) self.ax.figure.canvas.mpl_connect('button_release_event', self.on_release) def on_press(self, event): self.x0 = event.xdata self.y0 = event.ydata def on_release(self, event): self.x1 = event.xdata self.y1 = event.ydata self.rect.set_width(self.x1 - self.x0) self.rect.set_height(self.y1 - self.y0) self.rect.set_xy((self.x0, self.y0)) self.ax.figure.canvas.draw() a = Annotate() plt.show()

7.4 效果图

matplotlib 绘制线条图(6种方法用matplotlib实现矩形)(4)

自己整理并分享出来,供大家学习。

,