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 相关文章推荐
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
Python 正则表达式的高级用法
Dec 04 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
python编程嵌套函数实例代码
Feb 11 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
你可能不知道的Python 技巧小结
Jan 29 Python
PyCharm永久激活方式(推荐)
Sep 22 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
Python基础知识之变量的详解
Apr 14 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
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
简明json介绍
2008/09/28 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
从零开始做一个pagination分页组件
2017/03/15 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
Python中os.path用法分析
2015/01/15 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
详解supervisor使用教程
2017/11/21 Python
python编写简单端口扫描器
2019/09/04 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
应届毕业生通用的自荐书范文
2014/02/07 职场文书
大学英语专业求职信
2014/06/21 职场文书
教师自荐信范文
2015/03/06 职场文书