Python用matplotlib绘制曲线实验

一、题目

计算出每组数据的均值和标注差,用matplotlib画出如下风格。横轴是每组的序号,即1,2,… 10,曲线的圆点对应均值,颜色范围为标注差,显示垂直和水平网格线。
在这里插入图片描述

二、题目分析

首先分析这道题目的需求:需要通过给定的数据绘制出图像,并且均值还要以小圆点标出,还要有垂直和水平 的网格线,还要有颜色范围的标准差,还要有图像左上角的标签。

具体实现时先将储存数据的二维列表转换为numpy的数组,之后用一个std列表和一个avg列表分别储存每组数据的标准差和平均值。然后观察到折现是通过下标和平均值构成的,于是在plt.plot里传入的是从1到10的x和avg,颜色设置为灰色,尽量和题目匹配,小圆点颜色设置为黑色,实线宽度为3,标签记为Mean Value,此时绘制出的图像并没有颜色范围。我们在通过一个y1列表记做颜色的上标,具体值就是avg加上二分之一的std,y2的值记做avg减去二分之一,之后通过fill_between将这个范围绘制到图像中,将颜色设置为蓝色,标签记做Standard Deviation。此时输出的时候发现没有标签,是因为没有调用plt.legend(loc=2),加上之后输出就得到了正确的结果。

三、代码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
list=[[1,2,3,4,5,6],[2,4,6,8,10,12],[1,3,5,7,9,11],[1.1,2.2,3.3,4.4,5.5,6.6],[3,6,9,12,15,18],[4,8,12,16,20,24
],[5,10,15,20,25,30],[1.5,2.5,3.5,4.5,5.5,6.5],[1,4,7,10,13,16],[2,5,8,11,14,17]]
a=np.array(list)
std=[]
avg=[]
x=[1,2,3,4,5,6,7,8,9,10]
for i in range(0,len(list)):
    std.append(np.std(a[i]))
    avg.append(np.mean(a[i]))
fig=plt.figure()
plt.xticks(x,x)
plt.plot(x,avg,marker="o",color='#858687',markeredgecolor='black',linewidth=3,label="Mean Value")
for i in range(len(avg)):
    plt.text(x[i],avg[i],avg[i],fontsize=10)
y1=[]
y2=[]
for i in range(len(x)):
    y1.append(avg[i]+std[i]/2)
    y2.append(avg[i] - std[i] / 2)
plt.fill_between(x,y1,y2,color='#d2e3f0',label="Standard deviation")
plt.grid()
plt.legend(loc=2)
plt.show()

在这里插入图片描述

四、实验结果

在这里插入图片描述


Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。Matplotlib可用于Python脚本,Python和IPython Shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。

Matplotlib尝试使容易的事情变得容易,使困难的事情变得可能。您只需几行代码就可以生成图表,直方图,功率谱,条形图,误差图,散点图等。有关示例,请参见 示例图和缩略图库。

为了简单绘图,该pyplot模块提供了类似于MATLAB的界面,尤其是与IPython结合使用时。对于高级用户,您可以通过面向对象的界面或MATLAB用户熟悉的一组功能来完全控制线型,字体属性,轴属性等。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

叶绿体不忘呼吸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值