shanger

图形预览:

 

 0、import

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Arc, Circle, Ellipse, Rectangle, Wedge

 

1、绘图

# 创建画布
fig, ax = plt.subplots(nrows=1,
                       ncols=1,
                       subplot_kw=dict(aspect=\'equal\',
                                       facecolor=\'whitesmoke\'
                                      ),
                       figsize=(12, 8),
                       facecolor=\'sienna\'
                      )

# --------------------------------- head, body ---------------------------------
# head
ax.plot([1, 4],
        [6.4, 6.4],
        c=\'steelblue\'
       )

head = Arc(xy=(2.5, 6.4),    # 椭圆中心,(圆弧是椭圆的一部分而已)
           width=3,    # 长半轴
           height=2.5,    # 短半轴
           theta1=0,    # 圆弧起点处角度
           theta2=180,    # 圆弧终点处角度
           fc=\'w\',    # 填充色
           ec=\'steelblue\'    # 边框颜色
          )

# body
body = Rectangle(xy=(1, 2.1),    # 左下角坐标
                 width=3,
                 height=4,
                 fc=\'steelblue\'
                )


# --------------------------------- eyes ---------------------------------
# eye_socket
left_eye_socket = Wedge(center=(2, 7),    # 锲形的中心
                        r=0.4,    # 半径
                        theta1=0,    # 起始角度
                        theta2=360,    # 终止角度
                        fc=\'gold\'    # 填充颜色
                       )
right_eye_socket = Wedge(center=(3, 7),
                         r=0.4,
                         theta1=0,
                         theta2=360,
                         fc=\'k\'
                       )

# eyeball
left_eyeball = Wedge(center=(2, 7),    # 中心
                     r=0.3,    # 半径
                     theta1=15,    # 起始角度
                     theta2=345,    # 终止角度
                     color=\'k\'
                    )
right_eyeball = Wedge(center=(3, 7),    # 中心
                      r=0.3,    # 半径
                      theta1=156,    # 起始角度
                      theta2=195,    # 终止角度
                      color=\'darkred\'
                     )

# --------------------------------- base, shadow ---------------------------------
# base
ax.plot([1.1, 4], [1, 1.3], color=\'k\')
base = Arc(xy=(2.5, 1.1),    # 椭圆中心,(圆弧是椭圆的一部分而已)
           width=3,    # 长半轴
           height=1,    # 短半轴
           angle=10,    # 椭圆旋转角度(逆时针) 
           theta1=0,    # 圆弧的起点处角度
           theta2=175,    # 圆度的终点处角度
           color=\'k\',
           alpha=0.8
          )

# shadow
shadow = Ellipse(xy=(2.5, 0.5),    # 椭圆中心
                 width=4.2,    # 长半轴
                 height=0.5,    # 短半轴
                 fc=\'silver\',    # facecolor
                 alpha=0.2
                )

# --------------------------------- wheels ---------------------------------
left_wheel = Ellipse(xy=(1, 1),    # 中心
                     width=0.7,    # 长半轴
                     height=0.4,    # 短半轴
                     angle=95,    # 逆时针旋转角度
                     color=\'k\'
                    )
right_wheel = Ellipse(xy=(4, 1.3),    # 中心
                      width=0.7,    # 长半轴
                      height=0.4,    # 短半轴
                      angle=85,    # 逆时针旋转角度
                      color=\'k\'
                     )

# --------------------------------- arms ---------------------------------
left_upper_arm = ax.plot([0.3, 0.875],
                         [4.55, 5.75],
                         color=\'silver\',    # facecolor
                         lw=4,    # line width
                        )
left_lower_arm = ax.plot([0, 0.3],
                         [4.2, 4.55],
                         color=\'silver\',    # facecolor
                         lw=4,    # line width
                        )

right_upper_arm = ax.plot([4.125, 4.3],
                          [5.75, 6.95],
                          color=\'silver\',    # facecolor
                          lw=4,    # line width
                         )
right_lower_arm = ax.plot([4.3, 4.3],
                          [6.95, 7.25],
                          color=\'silver\',    # facecolor
                          lw=4,    # line width
                         )

# --------------------------------- hands ---------------------------------
left_hand = Wedge(center=(0, 4),
                  r=0.2,
                  theta1=290,
                  theta2=250,
                  fc=\'k\'
                 )
right_hand = Wedge(center=(4.3, 7.45),
                   r=0.2,
                   theta1=110,
                   theta2=70,
                   fc=\'k\'
                  )

# --------------------------------- shoulders ---------------------------------
left_shoulder = Ellipse(xy=(1, 5.75),    # 中心
                        width=0.5,    # 长半轴
                        height=0.25,    # 短半轴
                        angle=90,    # 逆时针旋转角度
                        fc=\'k\',    # facecolor
                       )
right_shoulder = Ellipse(xy=(4, 5.75),    # 中心
                         width=0.5,    # 长半轴
                         height=0.25,    # 短半轴
                         angle=90,    # 逆时针旋转角度
                         fc=\'k\',    # facecolor
                        )

# --------------------------------- elbows ---------------------------------
left_elbow = Wedge(center=(0.3, 4.55),
                   r=0.1,
                   theta1=0,
                   theta2=360,
                   fc=\'k\'
                  )
right_elbow = Wedge(center=(4.3, 6.95),
                   r=0.1,
                   theta1=0,
                   theta2=360,
                   fc=\'k\'
                  )

# --------------------------------- joints ---------------------------------
top_joint1 = Ellipse(xy=(2.5, 6.2),
                     width=0.5,
                     height=0.2,
                     fc=\'silver\',
                     ec=\'w\'
                    )
top_joint2 = Ellipse(xy=(2.5, 6.3),
                     width=0.5,
                     height=0.2,
                     fc=\'silver\',
                     ec=\'w\'
                    )

bottom_joint1 = Ellipse(xy=(2.5, 2),    # 中心
                        width=1,    # 长半轴
                        height=0.3,    # 短半轴
                        fc=\'silver\',    # facecolor
                        ec=\'w\'
                       )
bottom_joint2 = Ellipse(xy=(2.5, 1.7),    # 中心
                        width=1,    # 长半轴
                        height=0.3,    # 短半轴
                        fc=\'silver\',    # facecolor
                        ec=\'w\'
                       )

# --------------------------------- 向绘图区添加几何形状 ---------------------------------
polygons = [body,
            head,
            left_eye_socket,
            right_eye_socket,
            left_eyeball,
            right_eyeball,
            shadow,
            base,
            left_wheel,
            right_wheel,
            left_hand,
            right_hand,
            left_shoulder,
            right_shoulder,
            left_elbow,
            right_elbow,
            top_joint1,
            top_joint2,
            bottom_joint1,
            bottom_joint2
           ]

for pln in polygons:
    ax.add_patch(pln)


# 设置刻度范围
ax.axis([-1, 6, 0, 10])    # [xmin, xmax, ymin, ymax]

# 隐藏轴脊
for position in [\'left\', \'top\', \'right\', \'bottom\']:
    ax.spines[position].set_visible(False)
    
# 隐藏刻度
ax.set(xticks=(),
       yticks=()
      )

# 显示图形
plt.show()

图形:

 

软件信息:

分类:

技术点:

相关文章:

  • 2021-11-07
  • 2021-11-11
  • 2021-11-16
  • 2021-08-15
  • 2022-01-07
  • 2021-11-06
  • 2021-12-19
  • 2021-12-22
猜你喜欢
  • 2021-11-06
  • 2021-11-09
  • 2021-12-18
  • 2021-04-02
  • 2021-12-18
  • 2021-05-22
  • 2021-11-21
相关资源
相似解决方案