Python
的可视化工具有很多,数不胜数,各有优劣。本文就对其中的pylab
进行介绍。之所以介绍这一款,是因为它和Matlab
的强烈相似度,如果你使用过Matlab
,那么相信pylab
你也会很快上手。
简单的plot函数
pylab
绘图,最基本的函数就是plot
函数,当然如果想要将图片显示出来,需要额外添加一个show
函数。
在python
的绘图中,numpy
是一个非常常用的工具,不太熟悉的可以参考博主的另一篇博文:【Python】Python之Numpy的超实用基础详细教程。
例如:
import pylab import numpy as np if __name__ == "__main__": x = np.arange(0, 1, 0.05) y = [i*i for i in np.arange(0, 1, 0.05)] pylab.plot(x, y) pylab.show()
运行生成的图片为:
规定两个序列,只需要两个序列的长度相等,就可以以其中一个序列为横坐标,零一个序列为纵坐标,进行绘制。
但是也看得出来,这样的图片是比较寒碜的,简单朴素。我们可以对线条进行一些修饰,比如线型、颜色、点型等等。只需要在plot
函数中添加一个参数即可。这个参数用法比较灵活,特可以从下表的值中进行组合选择:
颜色
线型
点型
‘b' (蓝色)
‘-' (实线)
‘,' (像素)
‘g' (绿色)
‘–' (虚线)
‘o' (圆形)
‘r' (红色)
‘-.' (虚点线)
‘^' (上三角)
‘y' (黄色)
‘:' (点线)
‘s' (方形)
‘k' (黑色)
‘.' (点)
‘+' (加号)
‘w' (蓝色)
…
‘x' (叉形)
…
…
例如:
import pylab import numpy as np if __name__ == "__main__": x = np.arange(0, 1, 0.05) y = [i*i for i in np.arange(0, 1, 0.05)] pylab.plot(x, y, "b-.+") pylab.show()
运行生成的图片为:
如果,还想增加图例,x
轴、y
轴的含义和刻度,标题的信息,也可以通过添加一些函数来进行。
例如:
# -*- coding:UTF-8 -*- import pylab import numpy as np if __name__ == "__main__": x = np.arange(0, 1, 0.05) y = [i*i for i in np.arange(0, 1, 0.05)] pylab.plot(x, y, "b-.+", label='line') pylab.xlabel('x') # x、y轴的介绍 pylab.ylabel('y') pylab.xlim([0, 1]) # x、y轴的长度区间 pylab.ylim([0, 1]) pylab.xticks(np.arange(0, 1, 0.05), fontsize=8) # x、y轴的刻度 pylab.yticks(np.arange(0, 1, 0.05), fontsize=8) pylab.title('x-y') # x、y的标题 pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0)) # 图例的位置 pylab.show()
运行生成的图片为:
是不是瞬间就感觉丰富了许多!
多折线绘制
当然,在很多时刻需要绘制多条折线。很明显,可以选择将多条直线绘制到同一张图片上,也可以选择在图片上绘制不同的子图。
多折线同图
将多条折线绘制到同一张图片上,这非常简单,直接再plot
一条直线就可以了。
例如:
# -*- coding:UTF-8 -*- import pylab import numpy as np if __name__ == "__main__": x = np.arange(0, 1, 0.05) y1 = [i*i for i in np.arange(0, 1, 0.05)] y2 = [i+i for i in np.arange(0, 1, 0.05)] pylab.plot(x, y1, "b-.+", label='line1') pylab.plot(x, y2, "r-.+", label='line2') pylab.xlabel('x') pylab.ylabel('y') pylab.xlim([0, 1]) pylab.ylim([0, 1]) pylab.xticks(np.arange(0, 1, 0.05), fontsize=8) pylab.yticks(np.arange(0, 1, 0.05), fontsize=8) pylab.title('x-y') pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0)) pylab.show()
多折线不同图
将多条折线绘制到图片上的不同子图上,这就需要通过subplot
进行区域分割和指定。
subplot(numRows, numCols, plotNum)
该函数会将这个图片分为numRows行、nulCols列,然后按照从左到右、从上到下的顺序进行编号,最左上的编号为1。plotNum参数指定子图的所在区域。
例如:
# -*- coding:UTF-8 -*- import pylab import numpy as np if __name__ == "__main__": x = np.arange(0, 1, 0.05) y1 = [i*i for i in np.arange(0, 1, 0.05)] y2 = [i+i for i in np.arange(0, 1, 0.05)] pylab.subplot(1, 2, 1) pylab.plot(x, y1, "b-.+", label='line1') pylab.xlabel('x') pylab.ylabel('y1') pylab.xlim([0, 1]) pylab.ylim([0, 1]) pylab.xticks(np.arange(0, 1, 0.05), fontsize=8) pylab.yticks(np.arange(0, 1, 0.05), fontsize=8) pylab.title('x-y1') pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0)) pylab.subplot(1, 2, 2) pylab.plot(x, y2, "r-.+", label='line2') pylab.xlabel('x') pylab.ylabel('y2') pylab.xlim([0, 1]) pylab.ylim([0, 1]) pylab.xticks(np.arange(0, 1, 0.05), fontsize=8) pylab.yticks(np.arange(0, 1, 0.05), fontsize=8) pylab.title('x-y2') pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0)) pylab.show()
运行生成的图片为:
这是比较规整的例子,如果是不规整的呢?例如,第一行两张图,第二行一张图。这就要稍微变通一下了。
第一行其实是按照2*2
分法的第一个和第二个,第二行其实是按照2*1
分法的第二行。这样思考就会迎刃而解了。
# -*- coding:UTF-8 -*- import pylab import numpy as np if __name__ == "__main__": x = np.arange(0, 1, 0.05) y1 = [i*i for i in np.arange(0, 1, 0.05)] y2 = [i+i for i in np.arange(0, 1, 0.05)] pylab.subplot(2, 2, 1) pylab.plot(x, y1, "b-.+", label='line1') pylab.xlabel('x') pylab.ylabel('y1') pylab.xlim([0, 1]) pylab.ylim([0, 1]) pylab.xticks(np.arange(0, 1, 0.05), fontsize=8) pylab.yticks(np.arange(0, 1, 0.05), fontsize=8) pylab.title('x-y1') pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0)) pylab.subplot(2, 2, 2) pylab.plot(x, y2, "r-.+", label='line2') pylab.xlabel('x') pylab.ylabel('y2') pylab.xlim([0, 1]) pylab.ylim([0, 1]) pylab.xticks(np.arange(0, 1, 0.05), fontsize=8) pylab.yticks(np.arange(0, 1, 0.05), fontsize=8) pylab.title('x-y2') pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0)) pylab.subplot(2, 1, 2) pylab.plot(x, y1, "b-.+", label='line1') pylab.plot(x, y2, "r-.+", label='line2') pylab.xlabel('x') pylab.ylabel('y') pylab.xlim([0, 1]) pylab.ylim([0, 1]) pylab.xticks(np.arange(0, 1, 0.05), fontsize=8) pylab.yticks(np.arange(0, 1, 0.05), fontsize=8) pylab.title('x-y') pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0)) pylab.show()
运行生成的图片为:
其他函数
除了上述函数之外,还有一些其他的常用函数。
pylab.grid() # 网格绘制 pylab.savefig(图片存储路径, dpi=200) # 保存为图片
掌握了这些基本的折现图的绘制函数,相信一般的折线图都可以轻松掌握。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】
- 伊能静.1999-从脆弱到勇敢1987-1996精选2CD【华纳】【WAV+CUE】
- 刘亮鹭《汽车DJ玩主》[WAV+CUE][1.1G]
- 张杰《最接近天堂的地方》天娱传媒[WAV+CUE][1.1G]
- 群星《2022年度发烧天碟》无损黑胶碟 2CD[WAV+CUE][1.4G]
- 罗文1983-罗文甄妮-射雕英雄传(纯银AMCD)[WAV+CUE]
- 群星《亚洲故事香港纯弦》雨果UPMAGCD2024[低速原抓WAV+CUE]
- 群星《经典咏流传》限量1:1母盘直刻[低速原抓WAV+CUE]
- 庾澄庆1993《老实情歌》福茂唱片[WAV+CUE][1G]
- 许巍《在别处》美卡首版[WAV+CUE][1G]
- 林子祥《单手拍掌》华纳香港版[WAV+CUE][1G]
- 郑秀文.1997-我们的主题曲【华纳】【WAV+CUE】
- 群星.2001-生命因爱动听电影原创音乐AVCD【MEDIA】【WAV+CUE】