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 相关文章推荐
通过C++学习Python
Jan 20 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
python创建进程fork用法
Jun 04 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
python实现教务管理系统
Mar 12 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
Django forms表单 select下拉框的传值实例
Jul 19 Python
python中树与树的表示知识点总结
Sep 14 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
numpy库reshape用法详解
Apr 19 Python
详解PyTorch模型保存与加载
Apr 28 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
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
浅析php数据类型转换
2014/01/09 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
Python 字符串池化的前提
2020/07/03 Python
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
大学生工作推荐信范文
2013/12/02 职场文书
个人自荐书
2013/12/20 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
婚宴领导致辞
2015/07/28 职场文书
导游词之山东孔庙
2019/11/04 职场文书
python基础学习之递归函数知识总结
2021/05/26 Python
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android