matplotlib绘制简单地折线图

数据可视化与数据挖掘紧密相关最流行的工具之一是matplotlib,她是一个数学绘图库!

matplotlib可制作各种图表,可访问链接:http://matplotlib.org/内涵各种事列!

1、绘制简单的折线图

使用平方数序列1、4、9、16、25来绘制 这个图标
首先建立一个mpl_squares.py文件

import matplotlib.pyplot as plt		#导入pyplot模块,并制定别名plt
squares=[1,4,9,16,25]
plt.plot(squares)		#讲存储的平方数序列传递给plot()函数
plt.show()		#打开matplotlib查看器

运行即可 Ctrl+shift+f10效果图如下:
在这里插入图片描述

2、升级版(加粗线条、刻度标记大小、给定坐标轴标签)

import matplotlib.pyplot as plt
squares=[1,4,9,16,25]
plt.plot(squares,linewidth=5)#线条加粗

#设置图标标题,并给坐标轴加上标签
plt.title("Head Label",fontsize=24) #头标签,给定字体大小
plt.xlabel("X Abscissa",fontsize=14)  #横坐标
plt.ylabel("Y Ordinate",fontsize=14)    #纵坐标

#设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)
plt.show()

运行即可 Ctrl+shift+f10效果图如下:
相比于第一个视觉效果好些了!
相比于第一个视觉效果好些了!

3、视觉效果加强了,查看图片发现并没有绘制正确的数据(4.0处指定在了25!)

1、 当你向plot()提供一系列数字的时候,它假设第一个数据点对应的是x横坐标值为0,但我们第一个对应的点是x值为1。
2、改变此现象方法有,给plot()同时提供输入值和输出值即可!

import matplotlib.pyplot as plt
input_squares=[1,2,3,4,5]		#提供了输入值
squares=[1,4,9,16,25]
plt.plot(input_squares,squares,linewidth=5)#传递了输入值和输出值

#设置图标标题,并给坐标轴加上标签
plt.title("Head Label",fontsize=24) #头标签,给定字体大小
plt.xlabel("X Abscissa",fontsize=14)  #横坐标
plt.ylabel("Y Ordinate",fontsize=14)    #纵坐标

#设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)
plt.show()

改动了2至4行代码!!!(看注释)
运行即可 Ctrl+shift+f10效果图如下:
在这里插入图片描述


使用plot()时,可指定各种实参,还有很多函数对图形进行定制!


4、绘制单个点,可使用scatter(),并向它传递一对X和Y坐标

新建一个scatter_squares.py文件

import matplotlib.pyplot as plt
plt.scatter(2,4,s=200)
#设置图标标题,并给坐标轴加上标签
plt.title("Head Label",fontsize=24) #头标签,给定字体大小
plt.xlabel("X Abscissa",fontsize=14)  #横坐标
plt.ylabel("Y Ordinate",fontsize=14)    #纵坐标
#设置刻度标记的大小
plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()

运行即可 Ctrl+shift+f10效果图如下:
在这里插入图片描述

plt.scatter(2,4,s=200)调用了scatter()函数,X坐标2,Y坐标4,哪S是什么呢??
S是是指定的点的尺寸,如图中你会发现这个点是不是很粗!

5、可不可以使用scatter(),绘制一系列的点呢???

当然可以!!我们可以向scatter()传递两个列表分别包含X至和Y值

import matplotlib.pyplot as plt
x_value=[1,2,3,4,5]
y_value=[1,4,9,16,25]
plt.scatter(x_value,y_value,s=100)
#设置图标标题,并给坐标轴加上标签
plt.title("Head Label",fontsize=24) #头标签,给定字体大小
plt.xlabel("X Abscissa",fontsize=14)  #横坐标
plt.ylabel("Y Ordinate",fontsize=14)    #纵坐标
#设置刻度标记的大小
plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()

运行即可 Ctrl+shift+f10效果图如下:
在这里插入图片描述

6、前5点都是手动输入(如果数据过多)效率就会低下,这时候我们可以考虑自动计算数据

利用循环来完成计算,绘制1000个点代码如下:

import matplotlib.pyplot as plt
x_value=list(range(1,1001))
y_value=[x**2 for x in x_value]
plt.scatter(x_value,y_value,s=20)
#设置图标标题,并给坐标轴加上标签
plt.title("Head Label",fontsize=24) #头标签,给定字体大小
plt.xlabel("X Abscissa",fontsize=14)  #横坐标
plt.ylabel("Y Ordinate",fontsize=14)    #纵坐标
plt.axis([0,1100,0,1100000])
plt.show()

x_value=list(range(1,1001))
建立一个列表,包含1000个数字
y_value=[x**2 for x in x_value]
计算平方值,x值通过上方列表遍历得出来的,最终储存在y_value列表中
plt.axis([0,1100,0,1100000])
给定x轴范围0-1000,y轴范围0~1100000

运行即可 Ctrl+shift+f10效果图如下:
在这里插入图片描述

plt.scatter(x_value,y_value,edgecolors=‘none’,s=20)

补充一点,绘制很多点时候,轮廓可能会黏在一起,要删除数据点的轮廓可以在scatter()函数中使用edgecolors=‘none’

plt.scatter(x_value,y_value,c=‘red’,edgecolors=‘none’,s=20)

自定义颜色
向scatter()函数传递参数c,给定颜色名称(这里我就用红色举例下过如下,效果图见图一)
也可以使用RGB颜色模式自定义颜色
向scatter()函数传递参数c,其中包含三个0~1之间的小数值,分别代表红、绿、蓝分量(这里我举例了c=(0.5,0,0.8)效果为紫色,代码如下,效果图见图二)

plt.scatter(x_value,y_value,c=(0.5,0,0.8),edgecolors=‘none’,s=20)

图一:
在这里插入图片描述
图二:
在这里插入图片描述

7、单色,是不是太过于单调,这里我们可以使用渐变色

pyplot内置了一组颜色映射,你需要告诉pyplot该如何设置每个点颜色:

import matplotlib.pyplot as plt
x_value=list(range(1,1001))
y_value=[x**2 for x in x_value]
plt.scatter(x_value,y_value,c=y_value,cmap=plt.cm.Blues,edgecolors='none',s=20)
#设置图标标题,并给坐标轴加上标签
plt.title("Head Label",fontsize=24) #头标签,给定字体大小
plt.xlabel("X Abscissa",fontsize=14)  #横坐标
plt.ylabel("Y Ordinate",fontsize=14)    #纵坐标

plt.axis([0,1100,0,1100000])
plt.show()

plt.scatter(x_value,y_value,c=y_value,cmap=plt.cm.Blues,edgecolors=‘none’,s=20)

这里将c设置成了一个y值列表,并使用参数cmap告诉pylot要使用哪个颜色映射。

这里的意思是将y值最小的点设置显示为浅蓝色,y值较大的点显示为深蓝色(效果图如下:)
在这里插入图片描述
pyplot中所有的颜色的映射,可访问http://matplotlib.org/单机Examples,向下滚动到Color Examples,在点击colormaps_reference

7、最后一步,自动保存图标

plt.show()我们可以替换为plt.savefig()

plt.savefig('zjz.png',bbox_inches='tight')

‘zjz.png’
图片的文件名
bbox_inches=‘tight’
指定将图标多余的空白区域裁剪

文件图片会自动保存在mpl_squares.py同级目录下
效果如下:
在这里插入图片描述
双击显示效果如下:
在这里插入图片描述

不足之处,请指出,蟹蟹!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值