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轴: setxlabel

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) #20

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

s=np.sin(t*np.pi)print(s)print(s.size) #20

'''[ 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轴的显示图

importmatplotlib.pyplot as pltimportnumpy as npimportpandas 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对象

#将设置好的figure(图形、形状)显示出来

plt.show()

结果为

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

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

y=2**x +1plt.plot(x,y)

plt.show()

结果为

hist函数绘制频数直方图

实验一:

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

importmatplotlib.pyplot as pltimportnumpy as npimportpandas as pdimportrandom

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

data=np.zeros((100,100),dtype=int)

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

第二步:利用random模块将数组中每个值变为0-20的随机值for i inrange(len(data)):#拿到每一行数组的长度

for j inrange(len(data[0])):#根据以上2个参数可以一次循环取出数组中的没一个参数,并通过下面操作给每个参数随机赋值

data[i][j] = random.randint(1,20)print('初始Numpy,data数组的变化')print(type(data)) #

第三步:将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)) #

第四步:从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画曲线图例-Python数据分析-Matplotlib图标绘制相关推荐

  1. python画曲线图例-Python数据可视化之Matplotlib(折线图)

    一.使用Matplotlib生成数据图:是Python上的一个2D绘图库,它可以在跨平台上边出很多高质量的图像. 1.Pycharm安装Matplotlib库 (1)点击菜单上的"file& ...

  2. python画曲线图例-python使用matplotlib绘制折线图教程

    matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并 ...

  3. python画曲线图例-Python画各种图

    目录: 画图小tips 散点图 柱状图 热力图 折线图 堆积柱状图 1.画图小tips 目录: 1.1 保存多张图片+清空 1.2 画图标题/图例显示中文 1.3 图中加注释 1.4双坐标轴 1.5坐 ...

  4. python画曲线图例-如何使用python画曲线图

    如何使用python画曲线图?下面是基本步骤: 前提 首先,为了实际使用 Matplotlib,我们需要安装它. 安装 如果你安装了更高版本的 Python,你应该能够打开cmd.exe或终端,然后执 ...

  5. python画曲线-利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码. 直接上代码: from sklearn.datasets import load_breast_cancer ...

  6. python画资本市场线_使用matplotlib轻松绘制股票K线图

    K线图是看懂股票走势的最基本知识,K线分为阴线和阳线,阴线和阳线都包含了最低价.开盘价.最高价和收盘价,一般都K线如下图所示: 度娘说:K线图源于日本德川幕府时代(1603-1867年),被当时日本米 ...

  7. Python中使用random随机函数与Matplotlib库绘制随机漫步图

    Python中使用random随机函数与Matplotlib库绘制随机漫步图 一.概述 随机现象在我们的生活中并不少见,我们常见的一次抛硬币的正反面,股票的走势等等,都是随机事件.这些不确定性事件给我 ...

  8. python画曲线-Python绘制各种简单优美曲线

    原标题:Python绘制各种简单优美曲线 matplotlib是著名的Python绘图库,它提供了一整套绘图API,十分适合交互式绘图.,解决数据分析和可视化问题,其实也是Python的拿手好戏.另外 ...

  9. python画曲线图-python画曲线

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 桃心形曲线的方程如下 matlab绘制效果如下:? matlab程序如下. clc ...

最新文章

  1. Java成员变量与成员方法
  2. Microservices Reference Architecture - with Spring Boot, Spring Cloud and Netflix OSS--转
  3. python怎么导入opencv_对python opencv 添加文字 cv2.putText 的各参数介绍
  4. 【nginx】return 301 302 重定向URL
  5. java父系调用子系,获取usb设备父系或子代
  6. Equipment upload 不起作用的分析
  7. Openstack api security testing tools
  8. 设计模式——代理模式与装饰模式的异同
  9. Java 浅析内部类
  10. 【题目记录】——2021 年百度之星·程序设计大赛 - 初赛二
  11. 产品读书《大败局 I》 《大败局II》
  12. 湖北 政府项目 软件 测试,湖北电子政务应用系统技术验收测试规范.doc
  13. Docker-day1-安装+使用+常用镜像命令
  14. RuoYi-Vue简介
  15. CSS中的传统布局、多列布局、弹性伸缩布局及Emmet工具
  16. iPhone软件开发前需认真考虑问题
  17. unity实现动态广告牌效果
  18. python求数的积_python求数组积
  19. CE修改器基础使用教程
  20. web开发指南_成为专业Web开发人员的实用指南

热门文章

  1. linux c不占用cpu的延时,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写...
  2. mybatis date类型映射_MapStruct 映射工具
  3. react 显示当前时间_react中monent如何获取日期?
  4. java生成随机数保留数点后两位
  5. collections模块
  6. C语言中 怎样区分八进制 十进制 二进制?
  7. 如何准确区别python中strftime strptime的用法
  8. 从windows到linux的换行转换工具dos2unix
  9. HTML5动态分页效果代码
  10. (转载)你好,C++(17)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符