python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】


Posted in Python onApril 26, 2020

本文实例讲述了python matplotlib模块基本图形绘制方法。分享给大家供大家参考,具体如下:

matplotlib模块是python中一个强大的绘图模块

安装 pip  install matplotlib

首先我们来画一个简单的图来感受它的神奇

import numpy as np
import matplotlib.pyplot as plt
import matplotlib


zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf") #-------设置字体,这个可以事先下载https://www.fontpalace.com/font-details/SimHei/

x=np.arange(1,11,1)                         #-------从数字1到11,步长为1
y=2 * x +5

plt.title("我是标题",fontproperties=zhfont1)             #--------设置标题
plt.xlabel("x坐标标题",fontproperties=zhfont1)            #---------设置x坐标名称
plt.ylabel("y坐标标题",fontproperties=zhfont1)            #---------设置y坐标名称
plt.plot(x,y)                            #---------开始绘制 plt.plot(x,y,":r") 表示使用虚线红颜色绘制
plt.show() #---------显示图形

 下面是简单的图形

python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】

2 一个图片上绘制多个子图:subplot

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf")
# 计算正弦和余弦曲线上的点的 x 和 y 坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)

# 激活第一个 subplot
plt.subplot(2, 2, 1)
# 绘制第一个图像
plt.plot(x, y_sin)
plt.title('Sine-坐标图1',fontproperties=zhfont1)
plt.xlabel('x1')
plt.ylabel('y1')

# 将第二个 subplot 激活,并绘制第二个图像
plt.subplot(2, 2, 2)
plt.plot(x, y_cos)
plt.title('Cosine-坐标图2',fontproperties=zhfont1)
plt.xlabel('x2')
plt.ylabel('y2')
# 展示图像
plt.show()

图形如下

python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】

说明:从上图我们可以看到出现了两个子图
plt.subplot用来激活子图,plt.subplot('x坐标分成几个','y坐标分成几个','本身是第几个'): x*y就是把图片分成几个平等位置,最后的参数表示放在哪个位置,位置表示如下,从左到右,从上到下
1 2
3 4
如果要让上面的图对角表示呢,
修改为
plt.subplot(2, 2, 1)
plt.subplot(2, 2, 4)

 3 绘制直方图

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

#zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf")
plt.rcParams['font.family']='SimHei'

x=[0,1,2,3,4]
y=[20, 10, 30, 25, 15]
str1 = ("北京", "上海", "武汉", "深圳", "重庆")
plt.bar(x,height=y,width=0.5,label="城市工资",tick_label=str1) # tick_label要显示的名称
# for a, b in zip(x, y):
#   plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)
#分别按照坐标给出数据标签
plt.text(0,20+0.05,20,ha='center', va='bottom', fontsize=10) #简单说(x位置,y位置+0.05,要显示的数据,水平中心对齐,垂直底部对齐,字体大小)
plt.text(1,10+0.05,10,ha='center', va='bottom', fontsize=10)
plt.text(2,30+0.05,30,ha='center', va='bottom', fontsize=10)
plt.text(3,25+0.05,25,ha='center', va='bottom', fontsize=10)
plt.text(4,15+0.05,15,ha='center', va='bottom', fontsize=10)

plt.legend() #用来显示label标签的内容
plt.show()

下面显示图形

python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】

 4 绘制条形图(直方图的一种)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

#zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf")
plt.rcParams['font.family']='SimHei'

x_label=['2015', '2016', '2017','2018','2019'] #横坐标刻度显示
y1=[20, 10, 30, 25, 15] #纵坐标值
y2=[15, 15, 30, 40, 20]
y3=[23, 35, 40, 25, 20]
x=range(len(y1))
str1 = ("北京", "上海", "武汉")
#调整x和height的大小可以改变条形图的间距和两个年份的图形间距
rect1=plt.bar(x,height=y1,width=0.25,label="北京",color='red',alpha=0.8)
rect2=plt.bar([i+0.25 for i in x],height=y2,width=0.25,label="上海",color='green',alpha=0.8)
rect3=plt.bar([i+0.5 for i in x],height=y3,width=0.25,label="武汉",color='blue',alpha=0.8)

plt.title('某公司')
plt.xlabel('年份')
plt.xticks([index +0.25 for index in x],x_label) #直接调整了x刻度名称的位置
plt.ylabel('数量')

for rect in rect1: #设置显示数据内容
  # print(type(rect)) #<class 'matplotlib.patches.Rectangle'>
  # print(rect)    #Rectangle(xy=(-0.15, 0), width=0.3, height=20, angle=0)
  height=rect.get_height()
  plt.text(rect.get_x() + rect.get_width() / 2, height + 0.5, str(height), ha="center", va="bottom")

for rect in rect2:
  height=rect.get_height()
  plt.text(rect.get_x() + rect.get_width() / 2, height + 0.5, str(height), ha="center", va="bottom")

for rect in rect3:
  height=rect.get_height()
  plt.text(rect.get_x() + rect.get_width() / 2, height + 0.5, str(height), ha="center", va="bottom")


plt.legend()
plt.show()

结果看下图

python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】

5 饼图绘制

import matplotlib.pyplot as plt
import matplotlib

plt.rcParams['font.sans-serif']=['SimHei']#将图表内容字体设置为黑体,可以正常显示中文

ratios=[0.1,0.2,0.15,0.15,0.4]#存放比例列表,相加等于1
colors=['peru','coral','salmon','yellow','grey']#存放颜色列表,与比例相匹配
labels=["流行",'classic','pop','纯音乐','blue']#存放各类元素标签
explode=(0,0.1,0,0,0.1) #大于0的表示突出的比例,负值表示往里缩

plt.pie(ratios,explode=explode,colors=colors,labels=labels)#绘制饼图 (比例列表,突出列表,颜色列表,标签列表)
plt.title('歌单音乐种类百分比')
plt.axis('equal')#将饼图显示为正圆形
plt.show()

图形如下:

python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】

最后,此篇博客总结

1 字体可以使用自己下载的 zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf") 也可以使用系统的 plt.rcParams['font.family']='SimHei'
2 三要素,标题:plt.title     x座标 plt.xlabel          y坐标  plt.ylabel
3 绘制子图使用 plt.subplot
4 绘制数据标签:plt.text
5 图形显示 plt.show()
6 最后没说的 plt.savefig('路径/名称.png')
7 想让x坐标的文字倾斜45度: plt.xticks(rotation=45)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中处理字符串之isalpha()方法的使用
May 18 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python编写Windows Service服务程序
Jan 04 Python
如何用python整理附件
May 13 Python
Django Admin实现三级联动的示例代码(省市区)
Jun 22 Python
python实现zabbix发送短信脚本
Sep 17 Python
python实现flappy bird小游戏
Dec 24 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
Nov 12 Python
python 基于opencv操作摄像头
Dec 24 Python
Python利器openpyxl之操作excel表格
Apr 17 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 #Python
Python Selenium截图功能实现代码
Apr 26 #Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 #Python
Python实现密钥密码(加解密)实例详解
Apr 26 #Python
Python基于QQ邮箱实现SSL发送
Apr 26 #Python
Eclipse配置python默认头过程图解
Apr 26 #Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 #Python
You might like
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
2013/07/01 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
JavaScript实现动态生成表格
2020/08/02 Javascript
python中的编码知识整理汇总
2016/01/26 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
Python目录和文件处理总结详解
2019/09/02 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
小学生元旦感言
2014/02/26 职场文书
环卫工人节活动总结
2014/08/29 职场文书
2014年测量员工作总结
2014/12/12 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android