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)

#np.sin()取传入的参数的正弦
#np.pi 是一个常量,代表3.1415926...
s=np.sin(t*np.pi)
print(s)

'''
[ 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模块绘制多条折线图、散点图

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

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

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

  7. python使用matplotlib绘制折线图教程

    Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形.下面这篇文章主要介绍了python使用matplot ...

  8. Python的工具包[2] -&gt; matplotlib图像绘制 -&gt; matplotlib 库及使用总结

    matplotlib图像绘制 / matplotlib image description  目录 关于matplotlib matplotlib库 补充内容 Figure和AxesSubplot的生 ...

  9. Python——使用matplotlib绘制柱状图

    Python——使用matplotlib绘制柱状图 1.基本柱状图           首先要安装matplotlib(http://matplotlib.org/api/pyplot_api.htm ...

随机推荐

  1. css3水波纹效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. vijos 1025 背包 *

    链接:点我 输入顺序又反了 #include<cstdio> #include<iostream> #include<algorithm> #include< ...

  3. MongoDb Replica Set中使用的地址

    Unable to connect to a member of the replica set matching the read preference Primary 今天尝试使用MongoDB ...

  4. SQL Server 2012 BI 学习 第一天

    了解数据源,数据源视图,多维数据集,维度 数据源:一个数据库或者其它数据链接,SSAS不支持使用模拟功能来处理 OLAP 对象.模拟信息选择“使用服务帐户” 数据源视图:DSV是元数据的单个统一视图, ...

  5. hdu4714Tree2cycle

    链接 树上的一些操作还是不是太好想 直接dfs下去 不是最优的 一个节点最多保留两个度 如果它有两个以上的子节点 那么就与父节点断开 与k-2个子节点断开 再重新连 #pragma comment(l ...

  6. mysql索引之组合索引

    多列索引又称组合索引,在mysql的查询操作中,我们经常会遇到多个搜索条件,如:$sql = "select * from article where content='ma4' and t ...

  7. ie6背景透明的设置方法 ie6背景颜色透明和png图像透明解决方法

    IE6浏览器,让我们又爱又恨.爱它的是,可以让我们写的代码的时候,可以更标准,恨的是,它有太多无厘头的IE6常见bug(详情点击),让我们焦头烂额.现在现在用百度浏览器调查,国内占有率不到6%了,但是 ...

  8. centos6.4设备hadoop-2.5.1(完全分布式)

    环境介绍: 在这两种装备centos6.4(32位置)的server安装Hadoop-2.5.1分布式集群(2台机器,主要试验用.哈哈). 1.改动主机名和/etc/hosts文件 1)改动主机名(非 ...

  9. SQL 注意事项

    -------选择表名 配置Ctrl+3 能够select * 桌 USE [NB] GO /* 物: StoredProcedure [dbo].[SP_Select] 脚本日期: 05/28/20 ...

  10. Mongodb 参数说明及常见错误处理

       在 CentOS7 上安装 MongoDB 1 通过 SecureCRT 连接至 CentOS7 服务器: 2 进入到 /usr/local/ 目录:cd /usr/local 3 在当前目录下 ...