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 相关文章推荐
Linux下使用python调用top命令获得CPU利用率
Mar 10 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
Python unittest 简单实现参数化的方法
Nov 30 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
浅谈Python的方法解析顺序(MRO)
Mar 05 Python
使用Pycharm分段执行代码
Apr 15 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
Python ellipsis 的用法详解
Nov 20 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
最省空间的计数器
2006/10/09 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
理解JavaScript中的对象 推荐
2011/01/09 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
Python如何实现转换URL详解
2019/07/02 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
简单的JAVA编程面试题
2013/03/19 面试题
主题班会演讲稿
2014/05/22 职场文书
2014年中秋寄语
2014/08/11 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
解析Java异步之call future
2021/06/14 Java/Android
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫