matplotlib综合学习

简介: arange函数需要三个参数,分别为起始点、终止点、采样间隔。采样间隔默认值为1

1.arange函数

arange函数需要三个参数,分别为起始点、终止点、采样间隔。采样间隔默认值为1

看例子:

import numpy as np
#import matplotlib.pyplot as plt
x=np.arange(-5,5,1)
print(x)

5b49b1823c7b4287e127f682d07ddb08_d33579adbdd84975a84b75c30b98b7e1.png

2.绘制sin(x)曲线

import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-10,10,0.1)
y=np.sin(x)
plt.plot(x,y)
plt.show()

d3a764665edf699c2ecc64bfabb46b48_5c261fbfc34b48e6a33f127a5a519dd4.png


import numpy as np
import matplotlib.pyplot as plt

这部分是导入numpy库,之后起个小名叫np

导入matplotlib.pyplot(一个挺像MATLAB的函数集合),几个小名叫plt.

plt(x,y),咱画平面图也就xy了。

plt.show(),展示图片。

根据正文的第一个标题我们使用arange函数,可以看出(-10,10,0.1)前俩数字是决定横轴的范围,最后一个数字算是精度(这个数越大越糙),下面我看一下精度为一是什么样子的。

324e9c5288d0689d644144739c6d7dfd_d874d85785184fab817ba351dedff3a0.png

可以说是。。。不太美观。


3. 给sin()加标题,控制x,y轴

import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-10,10,0.1)
y=np.sin(x)
plt.xlim(-10,10)
plt.ylim(-3,3)
plt.xlabel("x")
plt.ylabel("y=x^3")
plt.title("$y=x^3$")
plt.plot(x,y)
plt.show()

708a737a725db1204ea87e5403363e52_8da67e363dd94406a3740a0b94eee58e.png


plt.xlim,这是控制x轴的范围的函数,这是固定的,不可以改,同理,plt.ylim也是。

plt.ylabel,这是给y轴填写标题的函数,同上。

plt.title,填写标题,在最上面,最中间的位置,可以看出这个“$”是不显示的。

4.linspace函数

linspace函数进行采样,linspace函数指定开始值、终值和元素个数来创建一维数组,可以通过endpoint=True关键字指定是否包括终值,缺省设置是包括终值。

看不明白,上例子——>

import numpy as np
#import matplotlib.pyplot as plt
x=np.linspace(0,10,5)
print(x)
y=np.linspace(1,10,10)
print(y)

7b6cdcbc201b3a8a7aabdc8d808af9fd_9f7cb09c84584d8cb85e568373533b32.png


x中每个数相差2.5;

y中每个数相差1。

5.使用linspace函数画一个sin()

import numpy as np
from pylab import *
x=np.linspace(-6,6,100)
sin1=np.sin(x)
xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5'))
plot(x,sin1,color='blue',linewidth=2.0,linestyle=':')
show()

12f1246ace7f9b7e2c668e9bd518414a_9249c9efb8c9438c82a5dac0b4074c78.png

pylab中包括了很多numpy和pyplot中的常用函数;

xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5')):这个我感觉就是控制x轴的,后面括号的五个数字换啥都行,对应的就是横轴里面的五个坐标(是叫坐标吧),其实没有后面的括号也行,系统还是会匹配这五个数字。

plot(x,sin1,color='blue',linewidth=2.0,linestyle=':'):前两个数就相当于原来的xy,设置蓝色的线,线的宽度是2,线的样式是...的。

(可以选择这些样式:'-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted')。

4d61f5cb3c123732933c1a7e0ff36dd4_c4da3b5e3e2b4e4f9f3fa47119e1badc.png

6.书接上回绘制一条曲线

import numpy as np
from pylab import *
x=np.linspace(-6,6,100)
sin1=np.sin(x)
xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5'))
plot(x,sin1,color='blue',linewidth=2.0,linestyle=':')
show()

1d31131a87ea9cf899c9e2541d194bf1_d8878dafd13545899b7205752d18600d.png


7.一张图片上绘制两条曲线

import numpy as np
from pylab import *
x=np.linspace(-6,6,100)
sin1=np.sin(x)
cos1=np.cos(x)
xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5'))
plot(x,sin1,color='blue',linewidth=2.0,linestyle=':')
plot(x,cos1,color='green',linewidth=2.0,linestyle='-')
show()

a46928081ce5a9020c8ab55f64894171_e065378960d9476a974f328a261c9375.png

如上图所示两条曲线就是复制对应曲线的代码,很简单,但是缺点什么,那就是图例,要不然我怎么知道那条曲线是干什么的。

8.图例添加

import numpy as np
from pylab import *
x=np.linspace(-6,6,100)
sin1=np.sin(x)
cos1=np.cos(x)
xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5'))
plot(x,sin1,color='blue',linewidth=2.0,linestyle=':',label='sin(x)')
plot(x,cos1,color='green',linewidth=2.0,linestyle='-',label='cos(x)')
legend(loc='lower left')
show()

db9e5696be6512a9dd82ad6e49d0d516_a224f8cec4dd4c0eb7e05d213c6e84ac.png


唯一和标题2,就多了几个代码:

label='sin(x)'【这句话是给图例加文字用的】

legend(loc='lower left')【这是控制图例位置的】

接下来引入下一个标题:legend函数

9.legend用法

我这里主要是将图例的摆放位置:

best 中文最好的,电脑自己选呗

upper right 右上

upper left 左上

lower left 左下

lower right 右下

right 中间最右

center left 中央偏左

center right 中央偏右

lower center 中央偏下

upper center 中央偏上

center 中央

最好把,是自己上手试一下,这些数据是哪来的呢,我直接写错(͡° ͜ʖ ͡°),程序报错了,电脑直接就告诉我都有啥了(͡° ͜ʖ ͡°)。。

10.画饼图

import numpy as np
import matplotlib.pyplot as plt
data=[1,2,3,4,2]
print(data)
plt.pie(data,explode=[0,0,0,0,0])
plt.show()

ab2c60f0cfbac71302cf51eea79215ad_b9be10df9f6e4f9b8908b31a82cfce39.png

data【存放数据,这里放几个数体现在图中就是几个区域】;

那个print没啥用,测试随机数的时候写的,忘删除了;

plt.pie(data,explode=[0,0,0,0,0]),画饼图用的,explode这个参数里面的每个数字不是零之后,都会有一块对应的区域“飞起来”。下面展示一下啊。

import numpy as np
import matplotlib.pyplot as plt
data=[1,2,3,4,2]
print(data)
plt.pie(data,explode=[0,0,0.3,0,0])
plt.show()

7a3033aca4a6ab4bd15d870c1c585ec0_adee659fa9ca4f37b558060bcd626ea0.png

那个数字也可以是负数呢,我把第三个数字换成-0.5看看奥。

1dd16f2992214109b15124f212bf4332_020c0d6f41b6409a96cbc844a247d7bc.png

可以,但是不好。


对了我上头说过随机数,就是把data换成随机生成的列表。

替换的语句是:

data=np.random.randint(1,8,5)

第一个数是随机数的下线(大于等于),第二个数是上限(小于等于),最后一个数是随机出来几个数(五个)。

import numpy as np
import matplotlib.pyplot as plt
data=np.random.randint(1,8,5)
print(data)
plt.pie(data,explode=[0,0,0.5,0,0])
plt.show()

63376c228fcd0c0f96ef9b038dfa567d_6e6dcf4d970e4b42baa2f2dfdc22487c.png

11.散点图

import numpy as np
from pylab import  *
a=np.random.normal(0,10,100)
b=np.random.normal(0,1,100)
scatter(a,b,s=10,c='green')
show()

11ee1b94b8e5cc4c90a7e1cbe218573d_4eff430727664022947539fe86d3711f.png

绘制散点图要注意num(a)=num(b),即a的数量等于b的数量;

scatter(x,y,s=10,c='green'),用来绘制散点图的函数,s代表散点图中(点)圆圈的大小,c代表圆圈的的颜色。

np.random.normal(0,1,100):提供服从正态分布的数据,看下面的例子:

import numpy as np
y=np.random.normal(0,1,100)
print(y)

6f3dcec83948b8d609dea286a66b577e_32ca689752c341d093fa550aff8f23a8.png

0:正态分布的均值,0就是y轴的位置。

1:正态分布的标准差,数字越大,正态分布越矮胖;数字越小,正太分布曲线越高瘦。

中间这个数据可以是零,大不了点都集中在中心呗,负数不可以。

100:数据数量,上图中提供100个数据。

60387bbe1454dfc0d5b3216cc40a2b19_67efdca02fe248a7acb3e66738bc73a3.png

12. 柱图

import numpy as np
import  matplotlib.pyplot as plt
plt.figure(figsize=(6,5))
data = np.random.randint(1,8,10)
print(data)
x= np.arange(len(data))
plt.bar(x+1,data,alpha=1,color='green',width=0.2)
plt.show()

da700a234cb4c0e1f991da43c8826d91_f9129037d8624d649b0cfe753bf8fdfa.png

加标题等情况使用中文:

import matplotlib as mpl

mpl.rcParams['font.family']='sans-serif'#显示无衬线字体

mpl.rcParams['font.sans-serif']=[u'SimHei']#显示中文

上面的和下面的这几句不用都使用,使用一个就行,要是不行,那就再想想办法吧。

plt.rcParams["font.sans-serif"] = ["SimHei"]# 正确显示中文和负号

plt.rcParams["axes.unicode_minus"] = False

plt.bar (x,data,alpha=1,color='green',width=0.2)

分别是x轴,y轴, 柱形颜色深浅,柱形的颜色,柱形的宽度

x= np.arange(len(data))

df737b8cd163b35cdb1d33d21bfcb027_dcf9975cc5ab45d99bad4a3993d69649.png


13.柱形图加折线

import numpy as np
import  matplotlib.pyplot as plt
plt.figure(figsize=(6,5))
data = np.random.randint(1,8,10)
print(data)
x= np.arange(len(data))
plt.plot(x+1,data,color='r')
plt.bar(x+1,data,alpha=1,color='green',width=0.5)
plt.show()

50e7acec1c4cc5304459f0d2abafd2ca_c4878903f09d46fb9a77742356677c66.png

plt.plot(x+1,data,color='r'),画折线的代码,加上即可。

14.简单三维图

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
sd = fig.add_subplot(111, projectinotallow='3d')#111,221,222,223,224
plt.show()

dd8a50c9de64646adde6ab9361123865_cf2341f5bad748849859929f61a915eb.png

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
sd = fig.add_subplot(111, projectinotallow='3d')#111,221,222,223,224
X = [0, 1, 2, 1, 2, 4]
Y = [0, 4, 4, 1, 3, 4]
Z = [0, 4, 0, 0, 2, 4]
sd.plot_trisurf(X, Y, Z)
plt.show()

cc68c5153071201606356903524b3def_2f981c052ae74d02a288fd9bdc4b6e37.png

这个3d图可以转动,方便观察;

第四行代码:111,就是全屏或者或是正中间,剩下(221、222、223、224)对应四个角落。

plot_trisurf(z,y,z,...) :画3d曲平面的函数。

x,y,z要竖着看,一列对应的是一个点的坐标。

15.三维曲面标题等设置

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams["font.sans-serif"] = ["SimHei"]# 正确显示中文和负号
plt.rcParams["axes.unicode_minus"] = False
fig = plt.figure()
sd = fig.add_subplot(111, projectinotallow='3d')#111,221,222,223,224
X = [0, 1, 2, 1, 2, 4]
Y = [0, 4, 4, 1, 3, 4]
Z = [0, 4, 0, 0, 2, 4]
sd.set_xlabel('x轴')
sd.set_ylabel('y轴')
sd.set_zlabel('z轴')
plt.title('这是标题')
sd.plot_trisurf(X, Y, Z)
plt.show()

4512c92a6c99b39159c4663888b8d3e6_d46b8d11e1b8416b986160616a2f67ea.png

我就直接使用标题1里面的代码加工了,

sd.set_xlabel('x轴')#x轴函数

sd.set_ylabel('y轴')#y轴函数

sd.set_zlabel('z轴')#z轴函数

plt.title('这是标题')#添加标题函数

因为我使用了中文,

plt.rcParams["font.sans-serif"] = ["SimHei"]# 正确显示中文和负号

plt.rcParams["axes.unicode_minus"] = False

所以还得用这两行代码,要是仅仅使用英文的话删除即可。

目录
相关文章
|
索引 Python
数据科学:Numpy、Pandas、Matplotlib学习(更新ing...)
数据科学:Numpy、Pandas、Matplotlib学习(更新ing...)
86 0
|
5月前
|
数据可视化 数据挖掘 数据处理
Matplotlib技术基础学习文档
**Matplotlib**是Python的绘图库,用于创建静态、动态和交互式视觉效果。本文档介绍了Matplotlib的基础和高级用法,包括如何安装、导入以及绘制折线图、散点图和柱状图。此外,还展示了自定义图表样式、绘制子图以及保存图像的方法。Matplotlib还可与Pandas等库集成,方便数据可视化。通过实例代码,读者可学习到如何有效地利用Matplotlib进行数据可视化。【6月更文挑战第8天】
22 1
|
6月前
|
数据采集 小程序 数据挖掘
Matplotlib库模板学习,2024年最新微信小程序页面跳转方法总结
Matplotlib库模板学习,2024年最新微信小程序页面跳转方法总结
|
数据可视化 API 开发者
|
机器学习/深度学习 数据可视化 TensorFlow
TF之NN:利用神经网络系统自动学习散点(二次函数+noise+优化修正)输出结果可视化(matplotlib动态演示)
TF之NN:利用神经网络系统自动学习散点(二次函数+noise+优化修正)输出结果可视化(matplotlib动态演示)
TF之NN:利用神经网络系统自动学习散点(二次函数+noise+优化修正)输出结果可视化(matplotlib动态演示)
|
2月前
|
Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
|
2月前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
50 1
|
2月前
|
存储 数据可视化 数据挖掘
揭秘!Matplotlib与Seaborn联手,如何让Python数据分析结果一目了然,惊艳全场?
在数据驱动时代,高效直观地展示分析结果至关重要。Python中的Matplotlib与Seaborn是两大可视化工具,结合使用可生成美观且具洞察力的图表。本文通过分析某电商平台的商品销量数据集,展示了如何利用这两个库揭示商品类别与月份间的销售关系及价格对销量的影响。首先使用Matplotlib绘制月份销量分布直方图,再借助Seaborn的箱线图进一步探索不同类别和价格区间下的销量稳定性。
64 10
|
2月前
|
数据可视化 Python
Python中的数据可视化:使用Matplotlib绘制图表
【9月更文挑战第11天】在这篇文章中,我们将探索如何使用Python的Matplotlib库来创建各种数据可视化。我们将从基本的折线图开始,然后逐步介绍如何添加更多的功能和样式,以使您的图表更具吸引力和信息量。无论您是数据科学家、分析师还是任何需要将数据转化为视觉形式的专业人士,这篇文章都将为您提供一个坚实的起点。让我们一起潜入数据的海洋,用视觉的力量揭示其背后的故事。
56 16
|
2月前
|
数据可视化 数据挖掘 API
使用Python进行数据可视化:探索Matplotlib和Seaborn库
【9月更文挑战第19天】在数据科学领域,将复杂的数据集转换成直观、易懂的图形是一项基本而关键的技能。本文旨在通过Python编程语言介绍两个强大的数据可视化库——Matplotlib和Seaborn,以及它们如何帮助数据分析师和研究人员揭示数据背后的故事。我们将从基础概念讲起,逐步深入到高级技巧,确保无论读者的背景如何,都能获得必要的知识和启发,以在自己的项目中实现有效的数据可视化。