我终于懂得如何使用matplotlib进行画图
一 前言
本篇文章带大家快速入门如何使用matplotlib画出精美数学的图片;看完本篇文章你将获得熟悉并简单使用matplotlib工具,会画基本得折现图,散点图,sin,cos图,一张画布画出多图等. 当然matplotlib得功能远不止这些,读者可以参照官网进行学习。
二 图像得组成
下面张图片来自matplotlib官网,简单说明一下图片得组成;
- figure:画布,一张图片得整体轮廓
- Axes:数轴,一张画布上可以画多张图片
- axis:坐标轴,通常得x轴,y轴等
- tick:刻度,坐标轴上得刻度
- title: 图片得标题
- legend:图例
- grid: 网格
- label:标签说明

三 画折现图
画图之前要导入matplotlib库和numpy库;
3.1 简单折线图
画一张简单得折线图,输入得数值只有y变量,并且设置x,y轴得标签和字体大小,详细说明看代码清单
import matplotlib.pyplot as plot
import numpy as np
# 着线图数据
line = [1,2,6,8,9,15,23,29,35]
# 指定线条粗细
plot.plot(line,linewidth=2)
# 设置标题
plot.title("zszxz line ",fontsize=12)
# 设置x轴
plot.xlabel("x",fontsize=12)
# 设置y轴
plot.ylabel("y",fontsize=12)
# 显示
plot.show()
图片显示结果

3.2 齐全的折线图
下面得图片画得是带有x,y数值得折现图,能够自定义x,y值,实现数学上的数字换图片效果; 描绘坐标就是(1,2),(2,4),(6,12),(8,16),(9,18);y的值正好是x的2倍(y = 2x);也可以发现与前面一张图片的不同之处就是初始值不是(0,0)开始,而是(1,2);
import matplotlib.pyplot as plot
import numpy as np
# 着线图数据
line1 = [1,2,6,8,9]
line2 = [2,4,12,16,18]
# 指定线条粗细
plot.plot(line1, line2,linewidth=2)
# 设置标题
plot.title("zszxz line ",fontsize=12)
# 设置x轴
plot.xlabel("x",fontsize=12)
# 设置y轴
plot.ylabel("y",fontsize=12)
# 显示
plot.show()
图片结果

3.3 销售折现图
模拟一次水果每个月份的销量,知识追寻者举例2个水果,分别是苹果,香蕉,然后用折现图显示每个月份的销量;代码清单将设置图例信息,限制x轴的范围(1~12月),设置x轴刻度;
import matplotlib.pyplot as plot
import numpy as np
# 折线图数据
line1 = [1,2,6,8,9,25,41,65,32,14,45,100]
line2 = [2,4,12,16,18,45,3,4,55,67,78,22]
# 线条1
plot.plot(line1,color='red',label="apple",linewidth=2)
# 线条2
plot.plot(line2,color='blue',label="banana",linewidth=2)
# 设置x轴
plot.xlabel("month",fontsize=12)
# 设置y轴
plot.ylabel("sales",fontsize=12)
# 设置标题
plot.title("zszxz prodcut sale ",fontsize=12)
# 添加图例
plot.legend()
# 设置x范围
plot.xlim(1,12)
# 设置 x 刻度
x_ticks = np.arange(1, 13, 1)
plot.xticks(x_ticks)
# 显示
plot.show()
执行结果

四 画散点图
4.1 简单的散点图
我们将以简单的(x,y)坐标匹配,然后在画布上画出简单的散点图;
import matplotlib.pyplot as plot
import numpy as np
x = [1,3,5,7,9]
y = [2,4,6,8,10]
# 散点
plot.scatter(x,y)
# 设置标题
plot.title("zszxz scatter",fontsize=12)
# 设置x轴
plot.xlabel("x",fontsize=12)
# 设置y轴
plot.ylabel("y",fontsize=12)
# 显示
plot.show()
执行结果如下,可以看见基本实现了散点图功能不过不是很好看;

4.2 计算型散点图
实际应用中不可能要我们手动输入2个列表进行描绘散点图,一般都包含一种数学关系,我们用计算的方式获得散点图;
import matplotlib.pyplot as plot
import numpy as np
x_val = list(range(1,50))
# y的值是x的平方
y_val = [x**2 for x in x_val]
# 设置x轴
plot.xlabel("x",fontsize=12)
# 设置y轴
plot.ylabel("y",fontsize=12)
# 散点
plot.scatter(x_val,y_val,color='pink')
# 显示
plot.show()
执行结果如下,修改颜色,数据集变多之后,明显就好看了许多;

4.3 随机数散点图
这次我们将使用随机数进行描绘图片,并设置图片散点颜色,标记属性;marker 属性默认是 o ,圆点,我们将其改成 * ; 更多marker配置配置可以参照官方文档
import matplotlib.pyplot as plot
import numpy as np
# 500 个随机数
n = 500
# 平均值为0,方差为1
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
#plot.scatter(X,Y,color='green',alpha=0.7)
plot.scatter(X,Y,color='green',alpha=0.7,marker='*')
#设置网格线
#plot.grid(True)
plot.show()
执行结果如下,可以发现瞬间美观了许多,当然根据不同的实际需求,画出的图片也不一样。

五 画正余弦
5.1正弦
知识追寻者将画 一个 x 轴从-2Π 到 + 2 Π的 正弦图,并且在区间进行1024个等分处理;
import matplotlib.pyplot as plot
import numpy as np
# -2Π 到 2 Π 1024 个等值
x = np.linspace(-np.pi*2, np.pi*2, 1024)
y = np.sin(x)
plot.plot(x, y,c='r')
# 设置x轴
plot.xlabel("x",fontsize=12)
# 设置y轴
plot.ylabel("y=sin(x)",fontsize=12)
# 设置标题
plot.title("zszxz sin",fontsize=12)
# 显示
plot.show()
执行结果如下:

5.2 余弦
跟正弦类似,画 一个 x 轴从-2Π 到 + 2 Π的 正弦图,并且在区间进行1024个等分处理;
import matplotlib.pyplot as plot
import numpy as np
# -2Π 到 2 Π 1024 个等值
x = np.linspace(-np.pi*2, np.pi*2, 1024)
y = np.cos(x)
plot.plot(x, y,c='c')
# 设置x轴
plot.xlabel("x",fontsize=12)
# 设置y轴
plot.ylabel("y=cons(x)",fontsize=12)
# 设置标题
plot.title("zszxz cos",fontsize=12)
# 显示
plot.show()

六 画布多图
知识追寻者将5章节的正弦,余弦整合,然后在一张画布上画出2张图片;懂得这个方法之后,读者可以在任意得一张画布上画出多张图片;为了显示更加好看,还设置了虚线(dashes)
import matplotlib.pyplot as plot
import numpy as np
# 创建画布
plot.figure()
# 子图1
plot.subplot(211)
x = np.linspace(-np.pi*2, np.pi*2, 1024)
sin_y = np.sin(x)
# 设置虚线
plot.plot(x, sin_y,dashes=[6, 3],c='m')
# 子图2
plot.subplot(212)
con_y = np.cos(x)
plot.plot(x, con_y,dashes=[6, 2],c='r')
# 显示
plot.show()

我终于懂得如何使用matplotlib进行画图的更多相关文章
- 使用numpy与matplotlib.pyplot画图
使用numpy与matplotlib.pyplot画图 1. 折线图 1 # -*- enccoding:utf-8 -*- 2 import numpy as np 3 import matplot ...
- seaborn(matplotlib)画图,linux系统中文乱码等问题解决
data = pd.read_json(json.dumps(issue_dpl)) # set pic size plt.figure(figsize=(13, 5)) sns.set_style( ...
- Python的matplotlib库画图不能显示中文问题解决
有两种解决办法: 一种是在代码里设置为能显示中文的字体,如微软雅黑(msyh.ttf)和黑体(simsun.ttc) 如下在要画图的代码前添加: import matplotlib.pyplot as ...
- python matplotlib.plot画图显示中文乱码的问题
在matplotlib.plot生成的统计图表中,中文总是无法正常显示.在网上也找了些资料,说是在程序中指定字体文件,不过那样的话需要对plot进行很多设置,而且都是说的设置坐标轴标题为中文,有时候图 ...
- 终于懂得Perl句柄是什么意思了
一直以来就对Perl语言特别感兴趣,去年特别膨胀的 直接买了一本大骆驼书,想好好看看Perl编程,结果看到I/O,句柄的时候就觉得云山雾罩,不知道是在说啥了, 最近,京东打折,终于有机会又买了本小骆驼 ...
- matplotlib&numpy画图
import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,6,100) y=np.cos(2*np.pi*x)*np.exp ...
- 用matplotlib库画图
1.用例一 import matplotlib.pyplot as plt import numpy as np x=np.linspace(0,10,100) y=np.cos(2*np.pi*x) ...
- Pyinstaller打包matplotlib.pyplot画图时提示无法找到Qt插件的解决办法
This application failed to start because it could not find or load the Qt platform plugin "wind ...
- linux终端没有GUI时python使用matplotlib如何画图
import matplotlib as mpl mpl.use('Agg') #而且必须添加在import matplotlib.pyplot之前,否则无效 ======== ======== == ...
随机推荐
- android学习——android项目的的目录结构
然后我们看一下Helloword的程序目录: 我们可以看到 大致有的文件: 1. MainHelloWorld.java文件 2. R.java文件 3. android.jar文件 4. RE ...
- name和code的相关设置
cdm中同时显示name和code tools->或右键Displace preferences->Entity->Advanced->Attributes->右侧Lis ...
- Laravel 5.3 用户验证源码探究 (一) 路由与注册
https://blog.csdn.net/realghost/article/details/52558962 简介 Laravel 从 5.2 开始就有了开箱即用的用户验证,5.3 又在 5.2 ...
- C# POST 表单发送文件
表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipart/form-data,而且要设定一个 boundary 参数,这个参数是由应用程序自行产生,它会用来识别每 ...
- 添加SuperSocket的启动代码到 Windows Azure 的 WorkRole 项目
与其它SuperSocket程序相同,启动代码同样也要写到程序的入口处,如 Windows Azure 的 WorkRole 项目的OnStart() 方法: public override bool ...
- U盘还原系统
相信现在不少的人已经开始使用U盘作为启动盘来安装系统,说起来这可比用光盘装系统可是方便多了.毕竟U盘可以随身携带,至于光盘嘛,就不多说了. 可是还有许多人对U盘安装系统还是有些陌生的感觉. ...
- JavaScript setTimeout this对象指向问题
上面这幅图片是原始的效果, 现在想鼠标移到图标上,显示图标的提示,但需要延时,也就是鼠标滑至图标上,并不立刻显示,而是等1秒后显示. html部分 <div class="porHea ...
- C#循环语句练习(二)
1.求1!+2!+...+n! 所有阶乘的和 2.求100以内的质数 (1)第一种做法 (2)另一种做法 3. 总数=幼兔+小兔+成兔成兔=上个月的小兔+上个月的成兔小兔=上个月的幼兔幼兔=这个月的成 ...
- Python--day48--面向对象回顾
面向对象回顾: 例1: 例2: 特殊方法(要背会):
- Jenkins 配置自动合并 release 分支到 master 分支
本文告诉大家如何在 Jenkins 配置合并到 release 的内容自动合并到 gitlab 的 master 分支 首先需要两个仓库,一个是 gitlab 的仓库,另一个是 Jenkins 的仓库 ...