python可视化第一篇——基于matplotlib库
下文主要内容来自课堂讲义,由本人整理。
1. 画图前准备
1.1 pip安装pandas、numpy、plt库;
1.2 中文显示问题:
win系统直接添加:
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
但是在MAC系统下中文字体显示问题报错:
Font family [‘sans-serif‘] not found.Falling back to DejaVu Sans.
解决方法:
- 在python下输入代码获取自己mac内字体存放路径:matplotlib.matplotlib_fname()
下载黑体字体后拷贝到第1步中找到到路径中存放字体文件夹
大致路径如下
/Users/********/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf
需要在Finder根目录下,按shift+command+. (.是英文句号),开启隐藏目录后删除下图中Fontlist文件。重启python即可。
2. 引例——文件读取
数据,存为.csv文件:
,语文 ,数学 ,英语 ,计算机 ,物理 ,化学 ,体育
宋丽英 ,86,64,85,88,90,55,98
王大伟 ,92,99,95,94,92,94,90
顾亦菲 ,91,87,99,95,95,92,85
鲁一平 ,78,99,75,81,83,88,92
潘晓雯 ,88,78,98,84,70,95,98
分析每门课的成绩,制作箱型图。
import matplotlib.pyplot as plt
import pandas as pd
scores=pd.read_csv("data1.csv",index_col=0)
plt.rcParams['font.sans-serif']=['SimHei']
scores.boxplot()
plt.show()
-|-
3. 【例1】 条形图的绘制步骤
第一步:导入必要的库
import matplotlib.pyplot as plt
import numpy as np
第二步:新建绘图区或子绘图区
plt.figure(figsize=(4,3),facecolor='b')
或者:
fig,ax=plt.subplots(figsize=(4,3))
第三步:准备数据
kc=('语文', '数学', '英语') # 课程信息
cj= (70, 95, 80) # 成绩数据
第四步:设置图表属性
ax.set_xlabel('课程') #设置X轴的标题
ax.set_ylabel('成绩') #设置Y轴的标题
ax.set_title('成绩示例') #设置图表标题
ax.set_xticks(np.arange(3)) #设置分类轴的刻度[0,1,2]
ax.set_xticklabels(kc) #设置分类轴的显示标签
第五步:绘制图表
rt = plt.bar(np.arange(3) , cj , label='刘芸')
#参数1指定分类轴的刻度,参数2指定作图用的数据,参数3指定图例的标签文本
第六步:显示图例
ax.legend(bbox_to_anchor=(1,0.8)) #显示图例文字
第七步:显示图表
plt.show()
3.1 绘图区
Matplotlib的图表区主要包括绘图区、图像和辅助显示对象
1 绘图区:包含Canvas、Figure和Axes三个对象,既可以由系统自动创建,也可以根据需要调用Figure()函数创建;
2 图像:调用各个绘图函数绘制的柱状图、折线图、饼图和散点图等;
3 辅助显示对象:包括标题、坐标轴、坐标轴名称、坐标轴刻度、坐标轴刻度 标签、图表边框线、网格线、图例、前景色等内容;
- ·创建绘图区
(1)自动创建绘图区:直接调用绘图函数,系统自动创建一个默认大小的绘图区
(2)手动创建绘图区:如下
import matplotlib.pyplot as plt
plt.figure(figsize=(6,4),dpi=72) #绘图区指定为6*4英寸,分辨率为72
plt.plot((3,6)) #绘制一条从顶点(0,3)到顶点(1,6)的直线
- ·绘图区函数
(1)figure( )函数 用于生成一个全局绘图区
figure([num=None, figsize=None, dpi=None, facecolor=None......, **kwargs])
注意:当前绘图区上没有建立坐标轴,默认不显示该全局绘图区。
如:plt.figure()
plt.figure(figsize=(6,6),facecolor=‘g')
(2)axes( )函数 生成坐标系风格的绘图区并显示
plt.axes(arg=None, **kwargs)
plt.axes(rect, projection=None, polar=False, **kwargs)如:plt.axes((0.1,0.3,0.5,0.8),facecolor='y')
注意:参数1对应(left,bottom,width,height),坐标原点默认为左下角的(0,0)
- ·创建子绘图区
(1)subplot( )函数 在全局绘图区创建子绘图区并显示
subplot(nrows, ncols, index, **kwargs)
注意:如果nrows、ncols和index都小于10缩写为一个整数
subplot(323)等价于subplot(3,2,3)
plt.subplot(1,1,1) #表示有1行1列,绘制在第1个子绘图区
plt.subplot(232) #有2行3列共6个子绘图区,只显示第2个(2)add_subplot(nrows, ncols, index[, **kwargs])
用于给已有全局绘图区添加子绘图区
import matplotlib.pyplot as plt
import numpy as np
fig1=plt.figure( )
fig1.add_subplot(222)
plt.plot((5,3,5),c='b',marker='D')
fig1.add_subplot(223)
x=np.random.randint(0,100,50)
y=np.random.normal(0,100,50)
plt.scatter(x,y,c='r')
plt.show()
(3)subplots(nrows, ncols, **fig_kw)函数
创建全局绘图区,然后添加多个子绘图区并显示所有子绘图区
import matplotlib.pyplot as plt
import numpy as np
fig,ax = plt.subplots(nrows=2,ncols=3,figsize=(6,4),dpi=72)
plt.subplots_adjust(wspace=0.3,hspace=0.3) #调整子绘图区之间的间隔
ax[0][1].plot((5),'y^') #在第0行第1列的子绘图区绘制一个黄色三角标记
ax[1][2].plot((3,8),'g') #在第1行第2列的子绘图区绘制一条绿色线条
plt.show()
注意:
[1]当行数与列数值均大于1时,用ax[i][j]访问;
[2]当行数或列数只有一个值等于1时,用ax[i]访问;
[3]当行数与列数值均等于1时,用plt或ax访问;
3.2 常见图表函数
函数 | 描述 |
---|---|
plt.plot(x,y,color,linewidth,linestyle,label) |
根据x,y数组绘制直线或曲线 |
plt.boxplot(data,label) |
绘制一个箱型图 |
plt.bar(x, height, width, bottom, *, align='center', **kwargs) |
绘制一个条形图(即柱状图) |
plt.barh(y, width, height, left, *, align='center', **kwargs) |
绘制一个横向条形图 |
plt.polar(theta,r) |
绘制极坐标图 |
plt.pie(data,explode) |
绘制饼图 |
plt.scatter(x,y) |
绘制散点图 |
plt.hist(x,bins,normed) |
绘制直方图 |
plt.contour(X,Y,Z,N) |
绘制等高线 |
3.3 坐标轴设置函数
函数 | 描述 |
---|---|
plt.axis( ) |
显示当前坐标轴刻度的取值范围 |
plt.axes( ) 输出:<matplotlib.axes._subplots.AxesSubplot at 0x22f751cb3c8> |
显示子绘图区 |
plt.xlim(xmin=1,xmax=5) |
设置X轴刻度取值范围为[1,5] |
plt.ylim(ymin=3,ymax=6) |
设置Y轴刻度取值范围为[3,6] |
plt.xscale(scale ) |
设置X轴缩放 |
plt.yscale(scale) |
设置Y轴缩放 |
plt.autoscale( ) |
自动缩放轴视图的数据 |
plt.text(x,y,s,fontdic,withdash) 如:plt.text(0.5,0.5,'Max') |
在指定位置添加注释文本 在两个坐标轴的中间位置输出“Max” |
plt.grid(True/Flase) |
是否显示绘图网格 |
3.4 标签设置函数
函数 | 描述 |
---|---|
plt.title("TITLE",loc='right') |
设置图表的标题loc:{'center','left','right'} |
plt.xlabel(“水平轴标题”) |
设置X轴的标题 |
plt.ylabel(“垂直轴标题”) |
设置Y轴的标题 |
plt.legend(loc=‘upper right’ ) 或直接指定相对位置: ax.legend(bbox_to_anchor=(1,0.8)) |
在指定位置显示图例 一般在绘图函数中用label参数 指定图例的文本内容 |
plt.xticks( ) |
设置X轴的刻度范围及显示标签 |
plt.yticks( ) 如:plt.yticks(np.arange(3), ('1','2','3')) |
设置Y轴的刻度范围及显示标签 |
3.5 绘制线条
plot( ): 用于绘制线条和标记,不仅可以绘制折线图、曲线图,还可以制作 出类似散点图的效果。 plot函数的使用形式为:
plt.plot([x],y, [fmt],**kwargs)
(1)x和y通常是列表或元组等序列,x中存储所有顶点的x坐标序列,y中存储所有顶点的y坐标序列, 其中参数x可以缺省,缺省值为列表[0, 1, 2, ..., n-1]。
(2)参数fmt是一个字符串变量,用于定义图表的基本属性,如颜色(color)、标记(marker)、 线型(linestyle)等。
如:plt.plot([2,3],[5,7], 'bD:', linewidth=5)
(3)kwargs是一个关键字参数,用于接收0个或多个由属性与属性值组成的键值对。若颜色属性赋值 为"green"、"black"等单词形式,则不能用fmt参数来组合赋值,必须对单个颜色属性赋值。
如:plt.plot([2,3],[5,7], color='blue', marker='D', linestyle =':',linewidth=5)
plt.plot((5),‘ro’) #在坐标(0,5)处绘制一个红色的圆点
plt.plot((5,10),‘g’) #从(0,5)到(1,10)绘制一条绿色的直线
plt.plot((5,10,3),‘B’) #从(0,5)到(1,10)再到(2,3)绘制一条蓝色的折线
注意:省略x坐标的话,x坐标默认为列表[0,1,2,...,N-1]
小栗子
python可视化第一篇——基于matplotlib库相关推荐
- Python可视化数据分析10、Matplotlib库
Python可视化数据分析10.Matplotlib库
- 单片机学习:第一篇 基于Python的树莓派语音助手
title: 单片机学习:第一篇 基于Python的树莓派语音助手 tags: 树莓派,python,语音助手,百度AIP 目录 一.pyaudio录音 二.语音识别 三.与图灵机器人对话 四.语音合 ...
- 可视化之瀑布图的绘制--基于matplotlib库
可视化之瀑布图的绘制--基于matplotlib库 第一步:前期准备-导入数据 第二步:打好基础1-画出堆叠柱形图的样子 第三步:打好基础2-并排柱形图 第四步:瀑布图成形 第五步:瀑布图优化1-柱体 ...
- python pptx教学_基于python-pptx库中文文档及使用详解
个人使用样例及部分翻译自官方文档,并详细介绍chart的使用 一:基础应用 1.创建pptx文档类并插入一页幻灯片 from pptx import Presentation prs = Presen ...
- Python人工智能第一篇:语音合成和语音识别
Python人工智能第一篇:语音合成和语音识别 此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径.目前市面上主流的AI技术提供公司有很多,比如百度,阿 ...
- Python学习第九篇:zipfile 库操作压缩包
Python学习第九篇:zipfile 库操作压缩包 -- 活动地址:CSDN21天学习挑战赛 zipfile是python里用来做zip格式编码的压缩和解压缩的 zipfile里有两个非常常用的 ...
- python数据可视化开发(1):Matplotlib库基础知识
文章目录 前言 01.工具栏组件 02.图表数据 03.设置字体字典 全局字体样式 常用中文字体对应名称 查询当前系统所有字体 04.图像配置实例 配置格式 参数说明 官方文档:[matplotlib ...
- Python画各种 3D 图形Matplotlib库
回顾 2D 作图 用赛贝尔曲线作 2d 图.此图是用基于 Matplotlib 的 Path 通过赛贝尔曲线实现的,有对赛贝尔曲线感兴趣的朋友们可以去学习学习,在 matplotlib 中,figur ...
- 带你写爬虫(python)第一篇----抓取安徽理工大学新闻网中所有新闻
最近一直在学习python爬虫,所以一直想写个简单的爬虫教程,所以第一篇就拿母校新闻网官网来练手了,没想到写爬虫的过程还停一波三折的.(后来发现新闻网页面还有访问限制,多次访问后,本机ip就被限制了, ...
最新文章
- 针对Android Tv的自定义RecyclerView2 0横竖向连动
- PaddleHub 口罩检测
- PEP 20 -- The Zen of Python(Python之禅)
- 【内核数据结构】 内核链表分析
- 涨姿势:Java 异常?尝试自定义异常
- git 修改分支名字_基础Git操作与GitHub协作吐血整理,收好!| 原力计划
- 交换机的基本原理配置(一)
- spring_01概念及案例
- SCRIPT鼠标放在图片上才显示色彩 平时是灰色的图片
- 的write方法有哪些参数_Python笔记13:文件操作三件套:read,write,seek
- 记git升级版本之后出现fatal: NullReferenceException encountered问题
- jQuery load和unload函数使用
- 给大家赠送一个我最近写的鼠标连点器的源代码!
- matlab fft freqz,【急】请教 fft、freqz、bode 求相频响应的区别及原因
- Rust的各种花式汇编操作
- 专为程序员编写的英语学习指南
- PID控制器原理详解
- Java基础Day01-Java基础语法
- 1. 全连接神经网络
- cad能整体比例缩小吗_cad比例缩放 cad如何整体缩小尺寸