下文主要内容来自课堂讲义,由本人整理。

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.

解决方法:

  1. 在python下输入代码获取自己mac内字体存放路径:matplotlib.matplotlib_fname()
  2. 下载黑体字体后拷贝到第1步中找到到路径中存放字体文件夹

    大致路径如下

    /Users/********/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf

  3. 需要在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( )
输出:(0.0, 1.0, 0.0, 1.0)

显示当前坐标轴刻度的取值范围

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 )
scale : ['linear' | 'log' | 'logit' | 'symlog']

设置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( )
如:plt.xticks(np.arange(3), ('Tom', 'Dick', 'Harry'))

设置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库相关推荐

  1. Python可视化数据分析10、Matplotlib库

    Python可视化数据分析10.Matplotlib库

  2. 单片机学习:第一篇 基于Python的树莓派语音助手

    title: 单片机学习:第一篇 基于Python的树莓派语音助手 tags: 树莓派,python,语音助手,百度AIP 目录 一.pyaudio录音 二.语音识别 三.与图灵机器人对话 四.语音合 ...

  3. 可视化之瀑布图的绘制--基于matplotlib库

    可视化之瀑布图的绘制--基于matplotlib库 第一步:前期准备-导入数据 第二步:打好基础1-画出堆叠柱形图的样子 第三步:打好基础2-并排柱形图 第四步:瀑布图成形 第五步:瀑布图优化1-柱体 ...

  4. python pptx教学_基于python-pptx库中文文档及使用详解

    个人使用样例及部分翻译自官方文档,并详细介绍chart的使用 一:基础应用 1.创建pptx文档类并插入一页幻灯片 from pptx import Presentation prs = Presen ...

  5. Python人工智能第一篇:语音合成和语音识别

    Python人工智能第一篇:语音合成和语音识别 ​此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径.目前市面上主流的AI技术提供公司有很多,比如百度,阿 ...

  6. Python学习第九篇:zipfile 库操作压缩包

    ​ Python学习第九篇:zipfile 库操作压缩包 -- 活动地址:CSDN21天学习挑战赛 zipfile是python里用来做zip格式编码的压缩和解压缩的 zipfile里有两个非常常用的 ...

  7. python数据可视化开发(1):Matplotlib库基础知识

    文章目录 前言 01.工具栏组件 02.图表数据 03.设置字体字典 全局字体样式 常用中文字体对应名称 查询当前系统所有字体 04.图像配置实例 配置格式 参数说明 官方文档:[matplotlib ...

  8. Python画各种 3D 图形Matplotlib库

    回顾 2D 作图 用赛贝尔曲线作 2d 图.此图是用基于 Matplotlib 的 Path 通过赛贝尔曲线实现的,有对赛贝尔曲线感兴趣的朋友们可以去学习学习,在 matplotlib 中,figur ...

  9. 带你写爬虫(python)第一篇----抓取安徽理工大学新闻网中所有新闻

    最近一直在学习python爬虫,所以一直想写个简单的爬虫教程,所以第一篇就拿母校新闻网官网来练手了,没想到写爬虫的过程还停一波三折的.(后来发现新闻网页面还有访问限制,多次访问后,本机ip就被限制了, ...

最新文章

  1. 针对Android Tv的自定义RecyclerView2 0横竖向连动
  2. PaddleHub 口罩检测
  3. PEP 20 -- The Zen of Python(Python之禅)
  4. 【内核数据结构】 内核链表分析
  5. 涨姿势:Java 异常?尝试自定义异常
  6. git 修改分支名字_基础Git操作与GitHub协作吐血整理,收好!| 原力计划
  7. 交换机的基本原理配置(一)
  8. spring_01概念及案例
  9. SCRIPT鼠标放在图片上才显示色彩 平时是灰色的图片
  10. 的write方法有哪些参数_Python笔记13:文件操作三件套:read,write,seek
  11. 记git升级版本之后出现fatal: NullReferenceException encountered问题
  12. jQuery load和unload函数使用
  13. 给大家赠送一个我最近写的鼠标连点器的源代码!
  14. matlab fft freqz,【急】请教 fft、freqz、bode 求相频响应的区别及原因
  15. Rust的各种花式汇编操作
  16. 专为程序员编写的英语学习指南
  17. PID控制器原理详解
  18. Java基础Day01-Java基础语法
  19. 1. 全连接神经网络
  20. cad能整体比例缩小吗_cad比例缩放 cad如何整体缩小尺寸

热门文章

  1. 判断两个物体之间是否有气其他Collider阻挡
  2. 关于Python的三个谎言,别再盲目学Python了
  3. PartitionMagic合成分区后的文件夹拒绝访问,并且无法删除的解决方案
  4. 【水滴石穿】ReactNativeDemo
  5. 微信小程序考勤管理系统
  6. 全国个别城市ID代码
  7. 如何删除回收站右键的找回清空的文件选项
  8. 关于MediaCoder使用过程问题整理
  9. 计算机科学计数法的定义,科学计数法的定义和运算规则
  10. 【翻译】如何选择一个开源软件许可证 Choosing an OSS license doesn’t need to be scary