这篇文章主要介绍了 Python 使用 pylab 库实现画线功能的方法, 结合具体实例分析了 Python 使用 pylab 库的相关函数实现画线功能的操作技巧, 并附带说明了相关函数与参数功能, 需要的朋友可以参考下

本文实例讲述了 Python 使用 pylab 库实现画线功能的方法。分享给大家供大家参考,具体如下:

pylab 提供了比较强大的画图功能,但是函数和参数都比较多,很容易搞混。我们平常使用最多的应该是画线了。下面,简单的对一些常用的划线函数进行了封装,方便使用。


# -*- coding: utf-8 -*-
import pylab
import random
class MiniPlotTool :'''A mini tool to draw lines using pylab'''basecolors = ['red','green','yellow','blue','black','cyan','magenta']def __init__(self, baseConfig) :self.figsize = baseConfig.get('figsize',None)self.axis = baseConfig.get('axis',None)self.title = baseConfig.get('title','NoName')self.ylabel = baseConfig.get('ylabel','NoName')self.grid = baseConfig.get('grid',False)self.xaxis_locator = baseConfig.get('xaxis_locator',None)self.yaxis_locator = baseConfig.get('yaxis_locator',None)self.legend_loc = baseConfig.get('legend_loc',0)if self.figsize != None :pylab.figure(figsize = self.figsize)if self.axis != None :pylab.axis(self.axis)pylab.title(self.title)pylab.ylabel(self.ylabel)ax = pylab.gca()pylab.grid(self.grid)if self.xaxis_locator != None :ax.xaxis.set_major_locator( pylab.MultipleLocator(self.xaxis_locator) )if self.yaxis_locator != None :ax.yaxis.set_major_locator( pylab.MultipleLocator(self.yaxis_locator) )self.lineList = []self.id = 1def addline(self, lineConf) :self.lineList.append((self.id, lineConf))self.id += 1return {'id' : self.id - 1}def removeline(self, lineId) :for i in range(len(self.lineList)) :id, conf = self.lineList[i]if id == lineId :del self.lineList[i]breakelse :return {'status' : -1}print len(self.lineList)return {'status' : 0}def __parselineConf(self, lineConf) :X = lineConf['X']Y = lineConf['Y']marker = lineConf.get('marker',None)color = lineConf.get('color', random.choice(MiniPlotTool.basecolors))markerfacecolor = lineConf.get('markerfacecolor',color)label = lineConf.get('label','NoName')linewidth = lineConf.get('linewidth',1)linestyle = lineConf.get('linestyle','-')return X, Y, marker, color, markerfacecolor, label, linewidth, linestyledef plotSingleLine(self, lineConf):X, Y, marker, color, markerfacecolor, label, linewidth, linestyle = self.__parselineConf(lineConf)pylab.plot(X, Y, marker = marker, color = color, markerfacecolor = markerfacecolor, label=label, linewidth = linewidth, linestyle = linestyle)pylab.legend(loc = self.legend_loc)def plot(self) :colors = [MiniPlotTool.basecolors[i % len(MiniPlotTool.basecolors)] for i in range(len(self.lineList))]for i in range(len(self.lineList)) :id, conf = self.lineList[i]if conf.get('color',None) :conf['color'] = colors[i]X, Y, marker, color, markerfacecolor, label, linewidth, linestyle = self.__parselineConf(conf)pylab.plot(X, Y, marker = marker, color = color, markerfacecolor = markerfacecolor, label=label, linewidth = linewidth, linestyle = linestyle)pylab.legend(loc = self.legend_loc)def show(self) :pylab.show()
if __name__ == '__main__' :#testbaseConfig = {#'figsize' : (6,8),#'axis': [0,10,0,10],#'title' : 'hello title',#'ylabel' : 'hello ylabel','grid' : True,#'xaxis_locator' : 0.5,#'yaxis_locator' : 1,#'legend_loc' : 'upper right'}tool = MiniPlotTool(baseConfig)X = [ i for i in range(10)]Y = [random.randint(1,10) for i in range(10)]Y2 = [random.randint(1,10) for i in range(10)]lineConf = {'X' : X,'Y' : Y#'marker' : 'x',#'color' : 'b',#'markerfacecolor' : 'r',#'label' : '222',#'linewidth' : 3,#'linestyle' : '--'}lineConf2 = {'X' : X,'Y' : Y2,'marker' : 'o','color' : 'b','markerfacecolor' : 'r','label' : '222','linewidth' : 3,'linestyle' : '--'}#tool.plotSingleLine(lineConf)print tool.addline(lineConf)print tool.addline(lineConf2)#print tool.removeline(1)tool.plot()tool.show()

运行效果图如下:

附:引用自:https://sites.google.com/site/guyingbo/matplotlib 学习笔记

线属性:

颜色(color 简写为 c):

蓝色: 'b' (blue)
绿色: 'g' (green)
红色: 'r' (red)
蓝绿色 (墨绿色): 'c' (cyan)
红紫色 (洋红): 'm' (magenta)
黄色: 'y' (yellow)
黑色: 'k' (black)
白色: 'w' (white)
灰度表示: e.g. 0.75 ([0,1] 内任意浮点数)
RGB 表示法: e.g. '#2F4F4F' 或 (0.18, 0.31, 0.31)
任意合法的 html 中的颜色表示: e.g. 'red', 'darkslategray' 线型(linestyle 简写为 ls):

实线: '-'
虚线: '--'
虚点线: '-.'
点线: ':'
点: '.' 点型(标记 marker):

像素: ','
圆形: 'o'
上三角: '^'
下三角: 'v'
左三角: '<'
右三角: '>'方形:'s'加号:'+'叉形:'x'棱形:'D'细棱形:'d'三脚架朝下:'1'(就是丫) 三脚架朝上: '2' 三脚架朝左: '3' 三脚架朝右: '4' 六角形: 'h' 旋转六角形: 'H' 五角形: 'p' 垂直线: '|' 水平线: '_' gnuplot 中的 steps: 'steps' (只能用于 kwarg 中) 标记大小(markersize 简写为 ms):

markersize: 实数 
标记边缘宽度(markeredgewidth 简写为 mew):

markeredgewidth:实数
标记边缘颜色(markeredgecolor 简写为 mec):

markeredgecolor:颜色选项中的任意值
标记表面颜色(markerfacecolor 简写为 mfc):

markerfacecolor:颜色选项中的任意值
透明度(alpha):

alpha: [0,1] 之间的浮点数
线宽(linewidth):

linewidth: 实数

希望本文所述对大家 Python 程序设计有所帮助。

Python 使用 pylab 库实现画线功能的方法详解相关推荐

  1. python中的pylab_Python使用pylab库实现画线功能的方法详解

    本文实例讲述了Python使用pylab库实现画线功能的方法.分享给大家供大家参考,具体如下: pylab 提供了比较强大的画图功能,但是函数和参数都比较多,很容易搞混.我们平常使用最多的应该是画线了 ...

  2. python 读取图片转换为一维向量_对Python中一维向量和一维向量转置相乘的方法详解...

    对Python中一维向量和一维向量转置相乘的方法详解 在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况.但是在pyth ...

  3. pythonprint字节按照16进制输出_对python以16进制打印字节数组的方法详解

    对python以16进制打印字节数组的方法详解 一.问题描述 如果直接用print打印bytes的话,有时候会直接显示ascii对应的字符,看起来很蛋疼. 二.运行效果 上面一行是直接用print打印 ...

  4. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  5. python中的sep参数_Python sep参数使用方法详解

    Python sep参数使用方法详解 这篇文章主要介绍了Python sep参数使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Pyth ...

  6. python支持向量机回归_Python中支持向量机SVM的使用方法详解

    除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm. 一.导 ...

  7. python求乘积_Python实现求笛卡尔乘积方法详解

    这篇文章主要介绍了Python实现求笛卡尔乘积的方法,结合实例形式分析了Python计算笛卡尔乘积的原理与实现技巧,需要的朋友可以参考下 本文实例讲述了Python实现求笛卡尔乘积的方法.分享给大家供 ...

  8. python布尔类型运算_Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...

  9. python怎么取共轭_python print出共轭复数的方法详解

    python print出共轭复数的方法详解 发布时间:2020-09-21 01:42:19 来源:脚本之家 阅读:92 作者:爱喝马黛茶的安东尼 复数是由一个实数和一个虚数组合构成,表示为:x+y ...

最新文章

  1. ajax发不出去请求_Ajax请求发送成功但不进success的解决方法
  2. 独家 | 如何通过TensorFlow 开发者资格考试(附链接)
  3. 爆笑!论文中,这些话的实际意思是...
  4. VTK:Points之DensifyPoints
  5. 黄健翔让赛场上出现大个中文字
  6. 关于错误Resource interpreted as Script but transferred with MIME type text_html
  7. ubuntu16.04下在TensorFlow中实现快速风格迁移
  8. 8.8 Sencha Studio 监视工具( Inspect Tool)
  9. 从入门到入土:基于C语言实现并发Web服务器|父进程子进程|代码展示
  10. Chapter 1 Securing Your Server and Network(7):禁用SQL Server Browse
  11. edp接口规范_EDP接口是什么接口?EDP是什么的缩写?
  12. Hive 多维度聚合分析查询
  13. Python数据结构与算法(3)--基本数据结构
  14. 树莓派raspbian OS 64位系统(beta)下载和更换源
  15. jsp写java文件,java(JSP)读写文件操作 | 学步园
  16. 让网络环境变成一弯清泉
  17. 如何使用Gatsby创建自己的博客
  18. 分布式系统组件的选型
  19. 视频二维码的用法及应用场景说明
  20. i5 1155G7怎么样?核显相当于什么水平?

热门文章

  1. 回溯算法解决八皇后问题(JAVA实现)
  2. Error in nextTick: “Error: Initialize failed: invalid dom.“ found in
  3. 蚂蚁金服上市后,借呗额度会大幅提升吗?
  4. 河北大学计算机复试题,河北大学复试形式复试经验分享
  5. 《过去的日子我们这样娱乐过7.0》
  6. 抢滩“数字厨电”时代,老板电器用全新“数字人”冲阵
  7. Arduino各开发板
  8. 生成对抗网络(GAN)的5个最有趣的应用
  9. 微信小程序登录授权与授权手机号
  10. okcc,呼叫中心 怎样搭建呼叫中心系统?