>  기사  >  백엔드 개발  >  pylab 라이브러리를 기반으로 한 Python의 선 그리기 기능에 대한 자세한 설명

pylab 라이브러리를 기반으로 한 Python의 선 그리기 기능에 대한 자세한 설명

巴扎黑
巴扎黑원래의
2017-08-09 11:00:091898검색

이 글에서는 선 그리기 기능을 구현하기 위해 pylab 라이브러리를 사용하는 Python의 방법을 주로 소개합니다. 선 그리기 기능을 구현하기 위해 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'
선 스타일(linestyle 축약형: ls):

실선: '-'
점선: '--'
점선: '-.'
점선: ':'
점: '.'
점 유형(마커):

Pixel: ','
원: 'o'
위쪽 삼각형: '^'
아래쪽 삼각형: 'v'
왼쪽 삼각형: 'ea580ba0e936798e7633c5687671d366'
사각형: 's'
더하기 기호: '+'
포크: 'x'
기둥형: 'D'
얇은 프리즘: 'd'
삼각대 아래쪽: '1'(즉丫)
삼각대 위 방향: '2'
삼각대 왼쪽 방향: '3'
삼각대 오른쪽 방향: '4'
육각형: 'h'
회전된 육각형: 'H'
오각형: 'p'
세로선: ' |'
수평선: '_'
gnuplot의 단계: 'steps'(kwarg에서만 사용할 수 있음)
마커 크기(ms로 축약되는 markersize):

markersize: 실수
마커 가장자리 너비(markeredgewidth, 축약형: ms) mew):

markeredgewidth: 실수
마커 가장자리 색상(markeredgecolor, mec로 축약됨):

markeredgecolor: 색상 옵션의 모든 값
마커 표면 색상(markerfacecolor, mfc로 축약됨):

markerfacecolor: 다음의 모든 값 색상 옵션
투명도(알파):

alpha: [0,1] 사이 부동 소수점
Linewidth(linewidth):

linewidth: 실수

위 내용은 pylab 라이브러리를 기반으로 한 Python의 선 그리기 기능에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.