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

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

目录
相关文章
|
7月前
|
JSON 数据可视化 数据处理
Python基础综合案例-数据可视化(折线图)
今天给大家带来的是Python综合实战开发的数据可视化操作 通过python实现对数据的分析、可视化
55 0
|
7月前
|
数据可视化 大数据 Python
Python基础综合案例-数据可视化(柱状图)
今天给大家带来的是Python综合实战开发的数据可视化操作 通过python实现对数据的分析、可视化
66 0
|
5月前
|
资源调度 自然语言处理 数据可视化
【数据分析与可视化】Matplotlib中十大绘图模型的讲解及实现(图文解释 附源码)
【数据分析与可视化】Matplotlib中十大绘图模型的讲解及实现(图文解释 附源码)
73 1
|
12天前
|
数据可视化 数据挖掘 C++
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
|
25天前
|
数据可视化 搜索推荐 数据处理
Matplotlib在数据科学中的应用与案例分析
【4月更文挑战第17天】本文探讨了Matplotlib在数据科学中的应用,强调其作为Python中最常用的可视化库,提供多种图表类型、高度可定制性、交互式功能及与其他库的集成。通过一个案例分析展示了如何使用Matplotlib绘制城市人口分布的条形图,并添加交互式元素以增强数据探索。掌握Matplotlib能提升数据科学家的可视化能力和效率。
|
25天前
|
数据采集 数据可视化 数据挖掘
Seaborn在数据分析中的应用:案例分析与实践
【4月更文挑战第17天】本文介绍了Seaborn在数据分析中的应用,它是一个基于Python的可视化库,简化了复杂数据的图表创建。通过一个销售数据分析的案例,展示了数据加载、描述性统计、相关性分析、多变量分析及高级可视化步骤。实践技巧包括数据清洗、图表选择、颜色使用、注释标签和交互性。Seaborn助力高效数据探索和理解,提升分析效率。注意,实际使用需根据数据集和目标调整,并参考最新文档。
|
25天前
|
搜索推荐 数据可视化 Python
Matplotlib进阶:打造个性化图表
【4月更文挑战第17天】本文介绍了如何使用Matplotlib进阶功能创建个性化图表,包括自定义样式表、制作动画、实现交互式图表及整合外部库。通过`plt.style.use()`可切换样式表,自定义图表样式;利用`FuncAnimation`模块可创建动画图表展示数据变化;启用交互模式配合事件处理函数,使图表响应鼠标操作;结合Seaborn和Plotly扩展Matplotlib功能,提升图表质量和交互性。这些技巧能帮助你打造更专业、更具吸引力的数据可视化作品。
|
2月前
|
数据可视化 Python
Python中的数据可视化:利用Matplotlib和Seaborn揭示数据的秘密
【2月更文挑战第12天】在这个数据驱动的时代,数据可视化成为了一种强大的沟通工具,它能够将复杂的数据集转化为直观、易于理解的图形。本文将探讨如何使用Python中的两个流行库——Matplotlib和Seaborn——来创建美观且富有信息量的图表。我们将从基本概念入手,逐步深入到高级技巧,最终通过一个实际案例,展示如何利用这些工具揭示数据背后的深层次信息。不同于传统的技术文章,我们将通过一个连贯的故事线,引领读者从零开始,一步步深入数据可视化的世界,让读者不仅学会技术,更能感受到数据可视化的魅力。
|
4月前
|
数据可视化 安全 数据挖掘
NumPy 秘籍中文第二版:十二、使用 NumPy 进行探索性和预测性数据分析
NumPy 秘籍中文第二版:十二、使用 NumPy 进行探索性和预测性数据分析
45 0
|
5月前
|
数据采集 数据可视化 数据挖掘
Python数据分析中如何更好地进行数据可视化?
Python数据分析中如何更好地进行数据可视化?
58 0