Maison  >  Article  >  développement back-end  >  Explication détaillée de la fonction de dessin au trait de Python basée sur la bibliothèque pylab

Explication détaillée de la fonction de dessin au trait de Python basée sur la bibliothèque pylab

巴扎黑
巴扎黑original
2017-08-09 11:00:091905parcourir

Cet article présente principalement la méthode de Python utilisant la bibliothèque pylab pour réaliser la fonction de dessin au trait. Il analyse les compétences opérationnelles de Python en utilisant les fonctions pertinentes de la bibliothèque pylab pour réaliser la fonction de dessin au trait avec des exemples spécifiques, et explique également. les fonctions et fonctions de paramètres associées. Les amis dans le besoin peuvent se référer à

Cet article décrit l'exemple d'utilisation de la bibliothèque pylab pour implémenter la fonction de dessin au trait en Python. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

pylab fournit une fonction de dessin relativement puissante, mais il existe de nombreuses fonctions et paramètres, ce qui est facile à confondre. Ce que nous utilisons habituellement le plus, c’est le dessin au trait. Ci-dessous, certaines fonctions de traçage couramment utilisées sont simplement encapsulées pour une utilisation facile.


# -*- 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()

Le rendu de l'opération est le suivant :

Pièce jointe : Cité de : https ://sites.google.com/site/guyingbo/matplotlib%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0

Attributs de ligne :

Couleur (en abrégé c) :

Bleu : 'b' (bleu)
Vert : 'g' (vert)
Rouge : 'r' (rouge)
Cyan (vert foncé) : 'c' (cyan)
Rouge violet (magenta) : 'm' (magenta)
Jaune : 'y' (jaune)
Noir : 'k' (noir)
Blanc : 'w' (blanc)
Représentation en niveaux de gris : par exemple 0,75 (n'importe quel nombre à virgule flottante compris entre [0,1])
Représentation RVB : par exemple '#2F4F4F' ou (0,18, 0,31, 0,31)
Toute représentation légale des couleurs en HTML : par exemple 'red', 'darkslategray'
Style de ligne (style de ligne abrégé en ls) :

Ligne continue : '-'
Ligne pointillée : '- -'
Ligne pointillée : '-.'
Ligne pointillée : ':'
Point : '.'
Type de point (repère) :

pixel : ','
Cercle : 'o'
Triangle supérieur : '^'
Triangle inférieur : 'v'
Triangle gauche : '7cc2e206a5d6b1d2dc63e30606993e2f 's'
Plus : '+'
Fourche : 'x'
Prismatique : 'D'
Prisme fin : 'd'
Trépied vers le bas : '1' (c'est 丫)
Trépied face vers le haut : '2'
Trépied face à gauche : '3'
Trépied face à droite : '4'
Hexagonal : 'h'
Tourner l'hexagone : 'H'
Pentagone : 'p'
Ligne verticale : '|'
Ligne horizontale : '_'
Étapes dans gnuplot : 'steps' (ne peut être utilisé que kwarg)
taille du marqueur (taille du marqueur abrégé en ms) :

taille du marqueur : nombre réel

largeur du bord du marqueur (markeredgewidth en abrégé mew) :

markeredgewidth : nombre réel

couleur du bord de la marque (markeredgecolor en abrégé mec) :

markeredgecolor : n'importe quelle valeur dans l'option de couleur

Couleur de la face du marqueur (markerfacecolor en abrégé mfc) :

markerfacecolor : n'importe quelle valeur dans l'option de couleur

Transparence (alpha) :

alpha : nombre à virgule flottante entre [0,1]

Linewidth (linewidth) :

linewidth : nombre réel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn