Matplotlib介绍

  Matplotlib是一个强大的Python绘图和数据可视化的工具包。 

Matplotlib的主要功能

  Matplotlib是python中的一个包,主要用于绘制2D图形(当然也可以绘制3D,但是需要额外安装支持的工具包)

Matplotliban安装、调用

   安装:pip install matplotlib

  调用:import matplotlib.pyplot as plt

Plot函数绘制多条曲线

一维参数

例如传入一个list对象使用plot,打印输出形成的图像

a=[1,2,3]
plt.plot(a) #只有一个参数时,值代表y轴的值,x为值对应的索引
plt.show()

结果:plot画出的图中横坐标是list的index,纵坐标是list的value,他会在图上形成三个点,然后将点连成线,所以它形成的是折线图,因为list满足线性关系(y的值是连续的),所以形成的图像是一个直线

二维参数

例如传入2个list对象使用plot,打印输出形成的图像

a=[1,2,3]
b=[4,5,6]
plt.plot(a,b)
plt.show()

结果:

折线图会根据传入参数的变化,线形状会发生变化

注意:传入的2个参数数值位数必须一致,否则会出现ValueError报错

设定线条风格(点线、虚线、圆点、颜色设置

线型linestyle(-,-.,--,.
点型marker(v,^,s,*,H,+,x,D,o,…
颜色color(b,g,r,y,k,w,…

1.默认是实现,可以设置成点线和虚线

2.默认是蓝色,可以设置成其他颜色

虚线 ' -- ' ,参数指定了线的类型为虚线

a=[1,2,3]
b=[4,5,8]
plt.plot(a,b,'--')
plt.show()

点线 ‘ * ’,参数制定了线的类型为点线(plt.plot(a,b,'o'), o 表示圆点

a=[1,2,3]
b=[4,5,8]
plt.plot(a,b,'*')
plt.show()

颜色 

例如设定红色线条

a=[1,2,3]
b=[4,5,8]
plt.plot(a,b,'r') #plt.plot(a,b,'red') 也可以直接写颜色的英文单词
plt.show()

形状+颜色联合设定,例如设定绿色+虚线线条

a=[1,2,3]
b=[4,5,8]
plt.plot(a,b,'g--') #绿色并且虚线
plt.show()

绘制多条曲线

#plot函数绘制多条曲线
标题:set title
x轴: set xlabel
y轴: set ylabel

只需要依次指定每组(两两)线条的x、y坐标即可

#一个图像中绘制多个线条
a=[1,2,3]
b=[4,5,8]
c=[7,8,6]
d=[1,5,2]
plt.plot(a,b,c,d,'r--')
plt.show()

可以给不同线条指定不同的风格

a=[1,2,3]
b=[4,5,8]
c=[7,8,6]
d=[1,5,2]
plt.plot(a,b,'bo',c,d,'r+')
plt.show()

多曲线基础操作演示

1)首先生成数据,绘制2条线

#一个窗口下绘制两条线,并对其添加显示内容
t=np.arange(0,2,0.1)
print(t)
print(t.size) # #np.sin()取传入的参数的正弦
#np.pi 是一个常量,代表3.1415926...
s=np.sin(t*np.pi)
print(s)
print(s.size) #
'''
[ 0.00000000e+00 3.09016994e-01 5.87785252e-01 8.09016994e-01
9.51056516e-01 1.00000000e+00 9.51056516e-01 8.09016994e-01
5.87785252e-01 3.09016994e-01 1.22464680e-16 -3.09016994e-01
-5.87785252e-01 -8.09016994e-01 -9.51056516e-01 -1.00000000e+00
-9.51056516e-01 -8.09016994e-01 -5.87785252e-01 -3.09016994e-01] '''
plt.plot(t,s,'r--',t*2,s,'g--')
plt.show()

显示结果

2)为x、y轴坐标设置标签label说明

plt.plot(t,s,'r--',t*2,s,'g--')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.show()

结果:存在两个问题    1):中文无法识别   2):坐标负号显示可能会有问题

做数据分析时,可以提前再开头写入这2行,避免中文、负号识别问题:

解决问题1:中文内容无法识别问题,在建立图标之前加入一行代码

#解决中文标签不显示问题plt.rcParams['font.sans-serif'] = ['SimHei']

解决问题2:坐标轴上负号无法显示的问题

#负号显示问题
plt.rcParams['axes.unicode_minus'] = False

3)为图像指定title标题说明

plt.title('元素正弦图示')

4)为图像指定图例label(即每条线设置描述说明)

#分别为2条线侧面添加描述说明
plt.plot(t,s,'r--',label='线条一走向')
plt.plot(t*2,s,'g--',label='线条二走向') plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('元素正弦图示') #一定要加结束语
plt.legend() plt.show()

最终显示结果

 

曲线图操作展示初级

(1)numpy+matplotlib结合,根据提供的值得出x、y轴的显示图

import matplotlib.pyplot as plt

import numpy as np
import pandas as pd #实例1 #从[-1,1]中取50个等差值
x=np.linspace(-1,1,50)
#print(x) y=2*x +1 #x:横坐标的值 y:纵坐标的值
res1=plt.plot(x,y)
print(res1) #[<matplotlib.lines.Line2D object at 0x0ACE2350>] 返回的是一个matplotlib.lines.Line2D对象 #将设置好的figure(图形、形状)显示出来
plt.show()

结果为

延伸:变化如果y=2^x,再次求最终的图像显示

x=np.linspace(-1,1,50)
#y=2^x平方,因为不是同比增长,生成的图像如下
y=2**x +1
plt.plot(x,y)
plt.show()

结果为

hist函数绘制频数直方图

实验一:

第一步:生成一个100*100初始值为0的二维数组

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import random
第一步:生成一个100*100初始值为0的二维数组
data=np.zeros((100,100),dtype=int)

第二步:利用random模块将数组中每个值变为0-20的随机值

第二步:利用random模块将数组中每个值变为0-20的随机值
for i in range(len(data)):
#拿到每一行数组的长度
for j in range(len(data[0])): #根据以上2个参数可以一次循环取出数组中的没一个参数,并通过下面操作给每个参数随机赋值
data[i][j] = random.randint(1,20) print('初始Numpy,data数组的变化')
print(type(data)) #<class 'numpy.ndarray'>

第三步:将Numpy数组类型转为DataFrame类型(即让数组有横竖的坐标)

第三步:将Numpy数组类型转为DataFrame类型(即让数组有横竖的坐标)
data_new=pd.DataFrame(data)
print(data_new) '''
DataFrame变化后的改变
0 1 2 3 4 5 6 7 8 ... 91 92 93 94 95 96 97 98 99
0 12 5 13 3 19 4 1 4 10 ... 14 2 14 10 4 10 13 15 15
1 12 18 16 20 6 7 1 14 18 ... 4 15 19 8 20 16 15 8 12
2 15 9 1 3 18 12 20 20 9 ... 20 2 1 9 17 9 17 2 2
3 10 15 8 2 3 16 13 13 19 ... 10 14 15 17 4 7 2 11 9
4 1 3 6 10 11 14 3 10 13 ... 8 19 1 12 2 10 20 6 5
5 20 19 11 8 1 19 1 2 6 ... 1 16 18 7 17 15 20 15 2
6 7 14 18 2 14 18 2 14 15 ... 14 11 16 14 12 17 8 10 4
7 20 12 17 5 11 10 10 8 14 ... 7 20 1 5 10 15 18 13 10
8 17 16 14 5 7 11 5 16 8 ... 18 8 4 7 7 3 17 10 20
9 6 7 16 13 7 15 13 15 5 ... 7 5 9 8 7 1 14 15 17
10 1 10 9 5 5 11 16 20 10 ... 17 18 18 7 16 3 11 7 13
11 3 10 15 17 9 16 19 13 1 ... 5 5 18 1 7 16 15 13 4
12 13 10 18 17 16 10 12 16 7 ... 12 2 7 16 12 19 7 11 12
13 4 10 20 1 1 1 19 6 17 ... 16 5 19 12 16 14 18 14 13
14 9 13 18 6 10 8 9 4 1 ... 9 12 6 8 10 1 10 9 18
15 6 11 4 5 17 1 10 2 12 ... 20 1 17 8 7 9 17 19 14
16 9 2 17 4 17 16 8 16 3 ... 10 11 5 16 1 2 7 18 16
17 16 3 2 16 15 17 8 8 13 ... 17 4 11 14 9 12 12 5 14
18 9 3 18 1 7 20 1 18 14 ... 1 5 2 12 9 10 6 4 12
19 19 18 3 13 18 17 7 12 5 ... 15 2 3 19 8 5 3 7 14
20 20 15 5 14 1 19 10 7 16 ... 12 14 12 12 18 15 17 4 6
21 10 20 19 6 6 20 18 20 5 ... 19 6 20 9 4 15 16 20 5
22 14 12 2 3 4 14 6 2 16 ... 16 10 5 20 3 14 20 6 19
23 14 18 6 12 3 11 10 8 8 ... 9 2 7 13 13 14 3 13 1
24 2 16 3 20 4 15 15 2 9 ... 20 7 16 13 3 1 18 5 17
25 9 17 8 15 5 16 1 19 3 ... 17 8 7 4 2 13 4 13 14
26 16 12 7 19 13 1 19 16 7 ... 15 11 3 19 19 4 2 1 6
27 8 14 2 6 7 16 11 19 19 ... 10 7 9 12 18 17 14 12 9
28 6 14 12 13 18 20 10 9 12 ... 15 2 20 14 11 6 16 19 3
29 18 3 13 15 20 5 10 18 17 ... 5 17 11 20 10 15 3 12 9
.. .. .. .. .. .. .. .. .. .. ... .. .. .. .. .. .. .. .. ..
70 5 9 20 9 20 4 3 12 17 ... 10 6 17 14 1 9 6 10 10
71 11 10 17 14 19 2 4 19 5 ... 8 4 7 1 20 13 7 11 15
72 13 11 16 15 3 8 4 17 13 ... 6 8 20 3 12 8 14 20 7
73 2 19 6 1 12 2 14 10 14 ... 10 17 9 1 18 1 6 14 7
74 3 8 17 1 12 4 17 18 7 ... 16 10 15 6 16 3 5 8 17
75 1 15 4 9 20 5 16 9 20 ... 18 13 10 6 19 9 20 12 16
76 16 6 6 19 4 5 8 1 11 ... 17 17 20 6 14 1 4 5 1
77 15 4 16 19 8 4 11 10 12 ... 1 6 19 13 12 16 10 3 13
78 18 16 20 13 16 15 18 11 4 ... 4 12 5 17 16 18 15 17 10
79 20 1 18 6 3 7 19 6 10 ... 14 16 12 8 15 9 5 6 6
80 15 14 4 1 14 8 10 18 14 ... 13 10 18 16 5 8 11 7 4
81 3 19 1 8 13 8 20 19 8 ... 7 19 9 9 9 6 10 19 20
82 9 18 19 1 3 1 13 6 3 ... 8 14 7 5 14 3 7 5 11
83 15 5 14 13 18 3 1 5 10 ... 12 7 14 5 1 11 7 6 3
84 12 18 16 10 19 6 9 3 8 ... 19 7 1 7 9 12 6 20 13
85 16 16 2 17 3 3 8 15 2 ... 1 20 15 1 17 19 16 4 4
86 2 12 11 7 5 14 19 19 18 ... 3 4 16 2 8 6 13 18 11
87 10 13 19 20 6 17 3 20 7 ... 16 2 8 20 19 14 17 6 7
88 6 3 7 12 13 19 1 17 14 ... 14 10 18 12 14 14 4 12 8
89 16 8 19 12 14 15 2 11 19 ... 2 18 20 6 18 9 20 10 2
90 12 17 19 19 17 18 18 14 6 ... 7 13 16 5 3 16 10 4 11
91 16 1 13 13 4 12 18 12 4 ... 11 19 5 6 18 18 9 17 17
92 3 8 10 1 13 1 15 19 19 ... 20 18 15 5 14 12 13 16 8
93 11 9 12 10 4 2 14 6 16 ... 6 11 11 9 11 7 8 17 14
94 13 3 6 3 16 3 3 11 10 ... 8 6 17 17 14 9 7 4 5
95 2 3 9 17 1 14 17 3 18 ... 3 4 12 6 7 14 12 14 8
96 3 18 8 5 11 10 11 11 19 ... 2 13 15 14 18 9 11 13 19
97 2 3 5 15 5 7 13 4 16 ... 12 2 16 5 1 10 10 2 13
98 3 9 6 4 2 13 5 20 12 ... 6 20 14 7 6 4 10 12 14
99 20 16 3 12 14 11 14 7 10 ... 9 3 11 17 5 3 9 1 15 '''
print(type(data_new)) #<class 'pandas.core.frame.DataFrame'>

第四步:从DataFrame数组中取第1列的值

#拿到第一列的值
print('取第一列的值')
print(data_new[0]) '''
取第一列的值
0 12
1 12
2 15
3 10
4 1
5 20
6 7
7 20
8 17
9 6
10 1
11 3
12 13
13 4
14 9
15 6
16 9
17 16
18 9
19 19
20 20
21 10
22 14
23 14
24 2
25 9
26 16
27 8
28 6
29 18
..
70 5
71 11
72 13
73 2
74 3
75 1
76 16
77 15
78 18
79 20
80 15
81 3
82 9
83 15
84 12
85 16
86 2
87 10
88 6
89 16
90 12
91 16
92 3
93 11
94 13
95 2
96 3
97 2
98 3
99 20
Name: 0, Length: 100, dtype: int32 '''

第五步:通过value_counts()对第四步数据进行处理,得出数值与频数的对应关系表,如下

#注意value_counts函数统计一个series上的数据情况
data_new=data_new[0].value_counts()
data_new=data_new.sort_index()
print('绘制DataFrame数组第一列中数值与频率的对应关系柱状图')
print(data_new) '''
(数值) (频数)
1 5
2 7
3 12
4 4
5 2
6 6
7 1
8 4
9 5
10 5
11 3
12 4
13 5
14 4
15 6
16 7
17 3
18 3
19 6
20 8
Name: 0, dtype: int64 '''

第六步:利用plt.hist()绘制柱状图

通过DataFrame绘制第一列,数据——频率柱状图

#通过DataFrame绘制第一列,数据——频率柱状图
print('根据上面的data_new,绘制第一列数据与频率的柱状图')
plt.hist(data_new,bins=20) #bins指柱状图的柱数默认是10
plt.show()

通过DataFrame绘制第一列,数据——频率柱状图

#通过Numpy绘制每一行,数据——频率柱状图(横轴:数据 纵轴:频数)
print('绘制Numpy,data[0]第一行数据与频率的柱状图')
plt.hist(data[0])
plt.show()

Python数据分析-Matplotlib图标绘制的更多相关文章

  1. Python数据分析matplotlib可视化之绘图

    Matplotlib是一个基于python的2D画图库,能够用python脚本方便的画出折线图,直方图,功率谱图,散点图等常用图表,而且语法简单. Python中通过matplotlib模块的pypl ...

  2. 数据分析——Matplotlib图形绘制

    创建画布或子图 函数名称 函数作用 plt.figure 创建一个空白画布,可以指定画布大小,像素. figure.add_subplot 创建并选中子图,可以指定子图的行数,列数,与选中图片编号. ...

  3. python 数据分析----matplotlib

    Matplotlib是一个强大的Python绘图和数据可视化的工具包. 安装方法:pip install matplotlib 引用方法:import matplotlib.pyplot as plt ...

  4. python 数据分析 Matplotlib常用图表

    Matplotlib绘图一般用于数据可视化 常用的图表有: 折线图 散点图/气泡图 条形图/柱状图 饼图 直方图 箱线图 热力图 需要学习的不只是如何绘图,更要知道什么样的数据用什么图表展示效果最好 ...

  5. python使用matplotlib:subplot绘制多个子图

    1 问题描述 matploglib 能够绘制出精美的图表, 有些时候, 我们希望把一组图放在一起进行比较, 有没有什么好的方法呢? matplotlib 中提供的 subplot 可以很好的解决这个问 ...

  6. Python使用matplotlib模块绘制多条折线图、散点图

    用matplotlib模块 #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:折线图.散点图测试 ''' import rando ...

  7. python的matplotlib.pyplot绘制甘特图

    博主本来就想简单地找一下代码,画一幅甘特图,结果百度之后发现甘特图的代码基本都不是用matplotlib库,但是像柱状图等统计图通常都是用这个库进行绘制的,所以博主就花了一些时间,自己敲了一份代码,简 ...

  8. python中matplotlib所绘制的图包含了很多的对象

    上图中的top=‘off’意思是说顶部的grid lines 看不见. 去除frame,意思就是将这个矩形给去除掉,spine意思是脊柱 bars = plt.bar(pos, popularity, ...

  9. python使用matplotlib:subplot绘制多个子图 不规则画图

    https://www.cnblogs.com/xiaoboge/p/9683056.html

随机推荐

  1. Spring Bean依赖但注入(autowired或resource)时NullPointerException(xml和annotation混用的场景下)

    项目中同时使用了xml和annotation的方式管理Spring Bean 启动时候报NullPointerException,依赖注入失败! 参考: http://fly0wing.iteye.c ...

  2. cnn为什么会不存在vanishing gradient的问题

    之前神经网络火过一段时间,但是后来又淡出了,后来又火了,尤其是到2012年真的像发水一样. 之前为什么不火了呢,因为人们发现网络浅了吧,没什么优势.网络深了吧,又会出现vanishing gradie ...

  3. background-position设置

    设置背景图片的位置:background-position:x y; 其中x和y可以为百分比也可以为像素

  4. 访问数据库需要注意的问题 c#

    在操作数据库的过程中,必然要产生数据库连接,这就要求在使用的时候要及时关闭连接.以避免数据库会话过多的问题. 以Oracle数据库为例: Oracle数据库查看会话,进程的语句 --查询数据库当前进程 ...

  5. Error:linker command failed with exit code 1 (use -v to see invocation) - iOS

    今天在操作 CoreData 时,创建完 Create NSManagedObject Subclass...  后,工程中会自动生成四个文件,如下图所示:   此时此刻便以工程,激动人心的时刻来临了 ...

  6. 带搜索框的select下拉框

    利用select2制作带有搜索功能的select下拉框 1.引入线上css和js <link href="https://cdnjs.cloudflare.com/ajax/libs/ ...

  7. Nginx的编译安装及服务启动脚本

    1.解决依赖关系 编译安装nginx需要事先需要安装开发包组"Development Tools"和 "Development Libraries".同时,还需 ...

  8. 通信服务器哈希Socket查找(Delphi)

    在Socket通信服务器的开发中,我们经常会需要Socket与某个结构体指针进行绑定.当连接量很大时,意味着需要个高效的查找方法 Delphi中提供了哈希算法类,以此类为基础,修改出Socket专用M ...

  9. JRE和JDK区别

    JRE: Java Runtime Environment JDK:Java Development Kit JRE顾名思义是java运行时环境, 包含了java虚拟机,java基础类库. 是使用ja ...

  10. Alter the structure of web pages with JavaScript

    Most of the DOM methods you've seen so far are useful for identifying elements. Both getElementById ...