Home  >  Article  >  Backend Development  >  Detailed explanation of Python's line drawing function based on the pylab library

Detailed explanation of Python's line drawing function based on the pylab library

巴扎黑
巴扎黑Original
2017-08-09 11:00:091898browse

This article mainly introduces the method of Python using the pylab library to realize the line drawing function. It analyzes the operation skills of Python using the relevant functions of the pylab library to realize the line drawing function based on specific examples, and also explains the related functions and parameter functions. Friends in need can refer to

. This article describes how to use the pylab library to implement the line drawing function in Python. Share it with everyone for your reference, the details are as follows:

pylab provides a relatively powerful drawing function, but there are many functions and parameters, and it is easy to get confused. What we usually use most is line drawing. Below, some commonly used line drawing functions are simply encapsulated for easy use.


# -*- 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 = 1
  def addline(self, lineConf) :
    self.lineList.append((self.id, lineConf))
    self.id += 1
    return {'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]
        break
    else :
      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, linestyle
  def 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__' :
  #test
  baseConfig = {
    #'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()

The operation effect diagram is as follows:

Attachment: Quoted from: https:/ /sites.google.com/site/guyingbo/matplotlib%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0

Line attributes:

Color (abbreviated as c):

Blue: 'b' (blue)
Green: 'g' (green)
Red: 'r' (red)
blue Green (dark green): 'c' (cyan)
Red purple (magenta): 'm' (magenta)
Yellow: 'y' (yellow)
Black: 'k' (black)
White: 'w' (white)
Grayscale representation: e.g. 0.75 (any floating point number within [0,1])
RGB representation: e.g. '#2F4F4F' or (0.18, 0.31, 0.31)
Any legal color representation in HTML: e.g. 'red', 'darkslategray'
Line style (linestyle abbreviated as ls):

Solid line: '-'
Dotted line: ' --'
Dotted line: '-.'
Dotted line: ':'
Point: '.'
Point type (marker):

pixel: ' ,'
Circle: 'o'
Upper triangle: '^'
Lower triangle: 'v'
Left triangle: '781df2fa94d00ebf5aee0dc52b793c0e'
Square shape: 's'
Plus sign: '+'
Fork shape: 'x'
Ring shape: 'D'
Thin prism shape: 'd'
Tripod facing down : '1' (that's Ya)
Tripod facing up: '2'
Tripod facing left: '3'
Tripod facing right: '4'
Hexagon: 'h'
Rotate hexagon: 'H'
Pentagon: 'p'
Vertical line: '|'
Horizontal line: '_'
Steps in gnuplot: 'steps' (can only be used in kwarg )
Marker size (markersize abbreviated as ms):

markersize: real number
Marker edge width (markeredgewidth abbreviated as mew):

markeredgewidth: real number
Marker edge color (markeredgecolor abbreviated as mec):

markeredgecolor: Any value in the color option
Marker surface color (markerfacecolor abbreviated as mfc):

markerfacecolor: Any value in the color option
Transparency (alpha):

alpha: floating point number between [0,1]
Linewidth (linewidth):

linewidth: real number

The above is the detailed content of Detailed explanation of Python's line drawing function based on the pylab library. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn