python数据分析与展示:Matplotlib库入门

Matplotlib库入门

Matplotlib库的介绍

Matplotlib:Python非常优秀的数据可视化第三方库。

Matplotlib库的效果

Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发。

matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。

import matplotlib.pyplot as plt

我们在此绘制一个最简单的,包含五个元素列表的图形。

代码实例:

import matplotlib.pyplot as plt
plt.plot([3,1,4,5,2])
plt.ylabel("Grade") #y轴增加了一个标签,名为Grade
plt.savefig('test',dpi=600) #将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量
plt.show()#可以在ipythpn的交互环境中展示生成的图像

绘制好的图形如下:

在这里插入图片描述

  • 在这个图形中,我们输入的列表[3,1,4,5,2]作为纵坐标的值显示出来,对于.plot函数,当只有一个输入列表或者数组时,也就是说输入的参数为一维时,这个参数会被自动视为y轴来处理。x轴即为这个列表的索引(从0开始),是自动生成的。
  • dpi指的是在每一英寸空间中包含的点的数量,我们在这里指定每个英寸包含600个像素点。

plt.plot([0,2,4,6,8],[3,1,4,5,2])

#当plt.plot()函数有两个以上的参数时,按照x轴和y轴的顺序绘制数据点

plt.axis([-1,10,0,6])

#**plt.axis()函数是设定横纵坐标尺度的函数。它的参数是一个具有四个变量的列表。**如上例所示,其中的-1,10是指x轴的坐标起始于-1,终止于10;y轴的坐标起始于0,终止于6。


pyplot的绘图区域

在这里插入图片描述

在绘图区域中选择子绘图区域

代码实例:

import numpy as np
import matplotlib.pyplot as plt


def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)

a = np.arange(0.0, 5.0, 0.02)

plt.subplot(211)
plt.plot(a,f(a))

plt.subplot(212)
plt.plot(a, np.cos(2*np.pi*a),'r--')
plt.show()

在这里插入图片描述

  • plt.subplot(211)第一次调用时将我们整个绘图区域分成两行一列,即为上下两块,选择第一块(上边的一块)。选择好了之后再调用plt.plot()函数,为在这个区域绘制我们想要的能量衰减曲线。

  • plt.subplot(2,1,2)第二次调用时,选择第二块绘图区域,绘制出正弦曲线,同时我们将曲线的格式设置为曲线形式。


pyplot的plot()函数

plt.plot(x, y, format_string, **kwargs)
  • x:x轴数据,列表或数组,可选。
  • y:y轴数据,列表或数组,可选。
  • format_string:控制曲线的格式字符串,可选。
  • kwargs:第二组或者更多(x, y, format_string, **kwargs)

代码实例:

import matplotlib.pyplot as plt
import numpy as np

a = np.arange(10)
plt.plot(a, a*1.5, a, a*2.5, a, a*3.5, a, a*4.5)
plt.show()

在这里插入图片描述

可以看到图片中产生了四条曲线,每一条曲线都是由一组x和y坐标产生的。

format_string:控制曲线的格式字符串,可选,由颜色字符风格字符标记字符组成。

  • 常用的颜色字符:
颜色字符说明颜色字符说明
‘b’蓝色‘m’洋红色 magenta
‘g’绿色‘y’黄色
‘r’红色‘k’黑色
‘e’青绿色 cyan‘w’白色
‘#008000’RGB某颜色‘0.8’灰度值字符串

如果用户不指定颜色,那么系统会自动选择一种与其它曲线不同的颜色来赋值这条曲线。

  • 常用的风格字符
风格字符说明
‘-’实线
‘–’破折线
‘-.’点划线
‘:’虚线
‘’ ‘’无线条

在这里插入图片描述

当前的常用打印机打印图片时一般为黑白颜色,所以我们最好用不同的风格字符来区分不同含义的曲线。

  • 常用的标记字符
标记字符说明标记字符说明标记字符说明
‘.’点标记‘1’下花三角标记‘h’竖六边形标记
‘,’像素标记(极小点)‘2’上花三角标记‘H’横六边形标记
‘o’实心圈标记‘3’右花三角标记‘+’十字标记
‘v’倒三角标记‘4’左花三角标记‘x’x标记
‘^’上三角标记‘s’实心方形标记‘D’菱形标记
‘>’右三角标记‘p’实心五角标记‘d’瘦菱形标记
‘<’左三角标记‘*’星形标记‘|’垂直线标记

在这里插入图片描述

以上三种字符在使用时可以同时使用。可以根据自己的习惯和现实的特点来选择曲线的风格。

**kwargs:第二组或者更多(x, y, format_string, kwargs)

  • color:控制颜色, color = 'green'
  • linestyle:线条风格,linestyle = 'dashed'
  • marker:标记风格, marker = 'o'
  • markerfacecolor:标记颜色, markerfacecolor = 'blue'
  • markersize:标记尺寸, markersize = 20

pyplot的中文显示

pyplot并不默认支持中文显示,如果希望在坐标系中出现额外的中文汉字,则需要用代码进行辅助。

  1. 用rcParams修改字体实现。

在这里插入图片描述

在这里插入图片描述

#'SimHei’表示黑体

rcParams的属性:

属性说明
‘font.family’用于显示字体的名字
‘font.style’字体风格,正常"normal"或 斜体"italic"
‘font.size’字体大小,整数字号或者’large’、‘x-small’

font.family:

中文字体说明
‘SimHei’中文黑体
‘Kaiti’中文楷体
‘LiSu’中文隶书
‘FangSong’中文仿宋
‘YouYuan’中文幼圆
‘STSong’华文宋体

在这里插入图片描述

在这里插入图片描述

  1. 在有中文输入的地方,增加一个属性:fontproperties

在这里插入图片描述

在这里插入图片描述

这种方法可以有效地在特定需要中文的地方确定中文字体,是更为合适的方法,建议使用。


pyplot的文本显示

pyplot的文本显示函数:

函数说明
plt.xlabel()对x轴增加文本标签
plt.ylabel()对y轴增加文本标签
plt.title()对图形整体增加文本标签
plt.text()在任意位置增加文本
plt.annotate()在图形中增加带箭头的注解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qIRMKF9R-1614604948230)(](https://img-blog.csdnimg.cn/20210301212226273.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lidGRXbXo=,size_16,color_FFFFFF,t_70#pic_center)]

![在

#Latex语法 y = c o s ( 2 π x ) y=cos(2\pi x) y=cos(2πx) 是由一对美元符号标识的Latex文本,Latex是一个全球非常成熟的排版文本体系,具有自己的排版语法,我们在代码中可以使用$符号来引入一部分的Latex语法,

#text()中的前两个坐标(2,1,)表示我们增加文本的坐标值,横坐标为2,纵坐标为1。显示的内容为第三个参数。

#plt.axis() 制定横纵坐标的范围。

#plt.grid() 的值设定为True,表示我们在图形中加入了网格曲线,最后将其绘制出来。

plt.annotate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)

在这里插入图片描述

在这里插入图片描述

#第一个参数为一个字符串,表示需要注释的内容;
#第二个参数表示箭头所在的位置,必须是用 (x,y)= 的形式作为引导,且后边为一个元组类型;
#第三个参数表示文本所在的位置;
#在第四个参数中,我们应用 arrowprops=dict() 利用字典的形式对箭头的格式做相关的说明。shrink参数使得箭头在文本和指向的图形之间都留有了一定的空白


pyplot的子绘图区域

这里介绍一个辅助subplot来进行子区域设计的方法:

plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)

理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始。

在这里插入图片描述

plt.subplot2grid((3,3),(1,0),colspan=2)

#第一个参数为元组,(3,3)表示把整个绘图区域分为3*3=9个等份;第二个参数(1,0)表示当前选中的位置为第1行第0列,即为图中黄色区域的左侧部分;第三个参数colspan=2表示在列的方向上向右延申两个长度,这样就构成了上图中所示的黄色区域。

在这里插入图片描述

当然,我们也可以通过使用GridSpec类来实现绘图区域的划分。

在这里插入图片描述



想要了解更多matplotlib库绘图的相关信息,可以访问:

Matplotlib官网

#所有视频截图均来自中国大学mooc北京理工大学嵩天老师的课程
《Python数据分析与展示》

好的,选手功能模块包括选手上传视频、提交退赛申请表、查看个人主页,下面是相应的代码: 1. 选手上传视频 在jsp页面上添加一个上传视频的表单,如下所示: ``` <form action="uploadVideo" method="post" enctype="multipart/form-data"> <input type="file" name="videoFile"> <input type="submit" value="上传"> </form> ``` 在Controller中添加上传视频的处理方法: ``` @RequestMapping(value = "/uploadVideo", method = RequestMethod.POST) public String uploadVideo(@RequestParam("videoFile") MultipartFile videoFile, HttpSession session) { // 获取当前登录的选手信息 Player player = (Player) session.getAttribute("player"); // 保存视频文件 String videoPath = saveVideoFile(videoFile); // 将视频路径保存到选手信息中 player.setVideoPath(videoPath); playerService.updatePlayer(player); return "redirect:/player/home"; } private String saveVideoFile(MultipartFile file) { // 保存文件到指定目录 String fileName = file.getOriginalFilename(); String filePath = "D:/video/"; try { File dest = new File(filePath + fileName); file.transferTo(dest); return filePath + fileName; } catch (IOException e) { e.printStackTrace(); return null; } } ``` 2. 提交退赛申请表 在jsp页面上添加一个退赛申请表的表单,如下所示: ``` <form action="submitQuitForm" method="post"> <textarea name="reason" rows="5" cols="50" placeholder="请输入退赛原因"></textarea> <br> <input type="submit" value="提交"> </form> ``` 在Controller中添加提交退赛申请表的处理方法: ``` @RequestMapping(value = "/submitQuitForm", method = RequestMethod.POST) public String submitQuitForm(String reason, HttpSession session) { // 获取当前登录的选手信息 Player player = (Player) session.getAttribute("player"); // 创建一条退赛申请记录 QuitForm quitForm = new QuitForm(); quitForm.setPlayerId(player.getId()); quitForm.setReason(reason); quitFormService.addQuitForm(quitForm); return "redirect:/player/home"; } ``` 3. 查看个人主页 在jsp页面上展示选手的个人信息和上传的视频,如下所示: ``` <h2>个人信息</h2> <p>姓名:${player.name}</p> <p>年龄:${player.age}</p> <p>性别:${player.gender}</p> <p>联系方式:${player.phone}</p> <h2>上传视频</h2> <video src="${player.videoPath}" controls="controls" width="480" height="320"></video> ``` 在Controller中添加查看个人主页的处理方法: ``` @RequestMapping(value = "/home", method = RequestMethod.GET) public String home(HttpSession session, Model model) { // 获取当前登录的选手信息 Player player = (Player) session.getAttribute("player"); model.addAttribute("player", player); return "player/home"; } ``` 以上就是基于ssm框架的选手功能模块的相关代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值