matplotlib.pyplot,matplotlib.patches 画了个哆啦A梦(Drawing Doraemon,叮当猫)

本文介绍了一种使用Python中的Matplotlib和NumPy库来绘制哆啦A梦图像的方法。通过绘制圆形、椭圆和线条等基本图形元素,实现了哆啦A梦头部的轮廓和特征细节,包括眼睛、鼻子等部分。

Doraemon
April 5, 2019
In [1]: import matplotlib.pyplot as plt
          import matplotlib.patches as patches
          import matplotlib as mpl
          import numpy as np
In [4]: mpl.rc('lines', linewidth = 1.)
          mpl.rc('axes', facecolor = 'k', edgecolor = 'w')
          mpl.rc('figure', facecolor = 'k', edgecolor ='w')
         

          fig = plt.figure( figsize=(10,10) )
          ax = plt.axes()
          #plt.grid(True, lw=1, ls='--', c='0.75')###

          circle_head = plt.Circle( (0.5, 0.6), 0.4, color='b', alpha=1 )
          ax.add_patch(circle_head)
          circle_face = plt.Circle( (0.5,0.48), 0.3, color='w', alpha=1)
          ax.add_patch(circle_face)

          #mouse
          X0=np.linspace(-0.3,0.3,100,endpoint=True)
          Y0=(X0**2)*5/3
          X1=X0+0.5
          Y1=Y0+0.5*5/3

          Y2=Y1-0.56
          plt.plot(X1,Y2, c='r')

         ellipse_eye_left = patches.Ellipse( (0.4,0.75), 0.2, 0.25, color='w', alpha=1, ec='k')
         ax.add_patch(ellipse_eye_left)
         ellipse_eye_right = patches.Ellipse( (0.6,0.75),0.2, 0.25, color='w', alpha=1, ec='k')
         ax.add_patch(ellipse_eye_right)
         

         ellipse_eye_ball_left = patches.Ellipse( (0.45, 0.73), 0.04, 0.08, color='k')
         ax.add_patch(ellipse_eye_ball_left)
         ellipse_eye_ball_right = patches.Ellipse( (0.55, 0.73), 0.04, 0.08, color='k')
         ax.add_patch(ellipse_eye_ball_right)
         

         ellipse_eye_lens_left = patches.Ellipse( (0.45, 0.73), 0.01,0.02, color='w')
         ax.add_patch(ellipse_eye_lens_left)       

         ellipse_eye_lens_right = patches.Ellipse( (0.55, 0.73), 0.01,0.02, color='w')
         ax.add_patch(ellipse_eye_lens_right)
         

         circle_nose = patches.Circle( (0.5, 0.62),0.05, color='r')
         ax.add_patch(circle_nose)
         circle_nose_lens = patches.Circle( (0.5, 0.63), 0.01, color='w')
         ax.add_patch(circle_nose_lens)

         #middle beard
         plt.plot( [0.4-0.175,0.4],[0.5,0.5], c='k')
         plt.plot( [0.6,0.6+0.175],[0.5,0.5], c='k')
         #upper
         plt.plot( [0.4-0.15,0.4],[0.62,0.54], c='k')
         plt.plot( [0.6,0.6+0.15],[0.54,0.62], c='k')
         #bottom
         plt.plot( [0.4-0.15,0.4],[0.38,0.46], c='k')
         plt.plot( [0.6,0.6+0.15],[0.46, 0.38], c='k')
         #vettical
         plt.plot([0.5,0.5],[0.275,0.57], c='k')
         rect_neck=patches.Rectangle((0.4-0.02,0.2-0.02),0.2+0.02*2, 0.02, color='r')
         ax.add_patch(rect_neck)
         wedge_bell=patches.Wedge((0.5,0.2-0.02),0.06 ,270+15,270-15, color='y')
         ax.add_patch(wedge_bell)
         hole_bell=patches.Circle( (0.5,0.2-0.02) ,0.01, color='k')
         ax.add_patch(hole_bell)
       

         plt.xticks([])#removing the scales
         plt.yticks([])
         plt.show()


 

### 导入matplotlib.pyplot库的作用 在使用CIFAR10数据集训练卷积神经网络模型的代码中,导入`matplotlib.pyplot`库主要有以下作用: - **数据可视化**:可以显示CIFAR10数据集中的图像,帮助直观了解数据集的内容。例如,显示训练集前9个图像,能对数据有一个初步的认识,方便后续的模型训练和调试工作 [^1]。 ```python import matplotlib.pyplot as plt import torchvision import torchvision.transforms as transforms # 定义数据预处理 transform = transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) # 加载训练集 trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) # 显示训练集前9个图像 fig, axes = plt.subplots(3, 3, figsize=(6, 6)) for i in range(9): img, label = trainset[i] img = img / 2 + 0.5 # 反归一化 img = img.numpy().transpose((1, 2, 0)) axes[i // 3, i % 3].imshow(img) axes[i // 3, i % 3].axis('off') plt.show() ``` - **训练结果可视化**:可以绘制训练过程中的损失曲线、准确率曲线等,帮助分析模型的训练情况。通过观察这些曲线,能够判断模型是否收敛、是否过拟合等,从而对模型进行调整和优化 [^1]。 ```python import matplotlib.pyplot as plt # 假设train_losses和train_accuracies分别是训练过程中的损失和准确率列表 train_losses = [1.5, 1.2, 1.0, 0.8, 0.6] train_accuracies = [0.3, 0.4, 0.5, 0.6, 0.7] # 绘制损失曲线 plt.figure(figsize=(10, 5)) plt.subplot(1, 2, 1) plt.plot(train_losses, label='Training Loss') plt.xlabel('Epoch') plt.ylabel('Loss') plt.legend() # 绘制准确率曲线 plt.subplot(1, 2, 2) plt.plot(train_accuracies, label='Training Accuracy') plt.xlabel('Epoch') plt.ylabel('Accuracy') plt.legend() plt.show() ``` ### 可能出现的问题及解决方法 #### 1. 库未安装 问题描述:在导入`matplotlib.pyplot`库时,可能会出现`ModuleNotFoundError`错误,提示找不到该模块。 解决方法:使用`pip`或`conda`安装`matplotlib`库。 ```bash pip install matplotlib ``` 或 ```bash conda install matplotlib ``` #### 2. 图形显示问题 问题描述:在某些环境中,如服务器环境或某些IDE中,可能会出现图形无法正常显示的问题,例如弹出空白窗口或无响应。 解决方法: - 对于服务器环境,可以使用`matplotlib`的非交互式后端,如`Agg`,将图形保存为文件。 ```python import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt # 绘制图形 plt.plot([1, 2, 3, 4]) plt.savefig('plot.png') ``` - 对于某些IDE,可以尝试更新`matplotlib`版本或检查IDE的图形显示设置。 #### 3. 中文显示问题 问题描述:在图形中使用中文标签时,可能会出现乱码的情况。 解决方法:设置`matplotlib`的字体为支持中文的字体,如`SimHei`。 ```python import matplotlib.pyplot as plt import matplotlib.font_manager as fm # 设置字体 plt.rcParams['font.family'] = 'SimHei' # 绘制包含中文标签的图形 plt.plot([1, 2, 3, 4]) plt.xlabel('横轴') plt.ylabel('纵轴') plt.title('示例图形') plt.show() ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIQING LIN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值