ホームページ  >  記事  >  バックエンド開発  >  Pythonの線描画機能をpylabライブラリをもとに詳しく解説

Pythonの線描画機能をpylabライブラリをもとに詳しく解説

巴扎黑
巴扎黑オリジナル
2017-08-09 11:00:091904ブラウズ

この記事では、Python で pylab ライブラリを使用して線描画機能を実現する方法を主に紹介し、pylab ライブラリの関連関数を使用して線描画機能を実現するための Python の操作スキルを具体的な例に基づいて説明します。関連関数とパラメータ関数 必要なもの 友達はそれを参照できます

この記事では、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 = 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()

ランニング効果図は以下のとおりです:

添付ファイル: 引用元: https://sites.google.com/site/guyingbo/matplotlib%E5%AD%A6%E4% B9%A0 %E7%AC%94%E8%AE%B0

線属性:

色(cと略記):

青: 'b' (青)
緑: 'g' (緑)
赤:「r」(レッド)
ターコイズ(ダークグリーン):「c」(シアン)
赤紫(マゼンタ):「m」(マゼンタ)
イエロー:「y」(イエロー)
ブラック:「k」(ブラック) )
白: 'w' (白)
グレースケール表現: 例: 0.75 ([0,1] 内の任意の浮動小数点数)
RGB 表現: 例: '#2F4F4F' または (0.18, 0.31, 0.31)
任意の有効なカラー表現HTML: 例: 'red'、'darkslategray'
線のスタイル (ls と略される線スタイル):

実線: '-'
点線: '--'
点線: '-.'
点線: ' :'
ポイント: '.'
ポイントの種類 (マーカー):

ピクセル: ','
円: 'o'
上三角: '^'
下三角: 'v'
左三角: 'd956059c17d29555cd214477c946b52b」
四角形:「s」
プラス記号:「+」
フォーク:「x」
角柱:「D」
細い角柱:「d」
三脚下:「1」(丫です) )
三脚が上を向く: '2'
三脚が左を向く: '3'
三脚が右を向く: '4'
六角形: 'h'
回転六角形: 'H'
五角形: 'p'
垂直線: '| '
水平線: '_'
gnuplot のステップ: 'steps' (kwarg でのみ使用可能)
マーカー サイズ (マーカーサイズは ms と省略):

マーカーサイズ: 実数
マーカーエッジ幅 (ミュウと省略):

markeredgewidth: 実数
マーカー エッジの色 (mec と省略):

markeredgecolor: カラー オプションの任意の値
マーカー サーフェスの色 (markfacecolor として mfc と省略):

markerfacecolor: カラー オプションの任意の値
透明度 (アルファ) :

alpha: [0,1] の間の浮動小数点数
Linewidth (線幅):

linewidth: 実数

以上がPythonの線描画機能をpylabライブラリをもとに詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。