> 백엔드 개발 > 파이썬 튜토리얼 > Matplotlib에서 그래픽 색상 및 선 채우기

Matplotlib에서 그래픽 색상 및 선 채우기

爱喝马黛茶的安东尼
풀어 주다: 2019-06-04 16:31:40
앞으로
4572명이 탐색했습니다.

Matplotlib는 다양한 하드카피 형식과 다양한 플랫폼의 대화형 환경에서 출판 품질의 그래픽을 생성할 수 있는 Python 2D 플로팅 라이브러리입니다.

Matplotlib에서 그래픽 색상 및 선 채우기

마지막 Matplotlib 데이터 시각화 튜토리얼에서는 누적 차트와 원형 차트를 만드는 방법을 소개하겠습니다. 오늘 제가 여러분께 가져갈 것은 그래픽 색상과 선 채우기입니다.


Color

가장 먼저 변경해야 할 것은 plt.title을 stock 변수로 변경하는 것입니다.

plt.title(stock)
로그인 후 복사

이제 라벨 색상 변경 방법을 소개하겠습니다. 축 개체를 수정하여 이 작업을 수행할 수 있습니다.

ax1.xaxis.label.set_color('c')
ax1.yaxis.label.set_color('r')
로그인 후 복사

이것을 실행하면 단어와 마찬가지로 레이블의 색상이 변경되는 것을 볼 수 있습니다.

다음으로, 다음과 같이 자동 선택이 아닌 표시할 축에 대한 특정 숫자를 지정할 수 있습니다.

ax1.set_yticks([0,25,50,75])
로그인 후 복사

다음으로 패딩을 도입하고 싶습니다. 채우기는 변수와 선택한 값 사이의 색상을 채우는 것입니다. 예를 들어 다음과 같이 보일 수 있습니다.

ax1.fill_between(date, 0, closep)
로그인 후 복사
로그인 후 복사

여기서 코드는 다음과 같습니다.

import matplotlib.pyplot as plt
import numpy as np
import urllib
import datetime as dt
import matplotlib.dates as mdates

def bytespdate2num(fmt, encoding='utf-8'):
    strconverter = mdates.strpdate2num(fmt)
    def bytesconverter(b):
        s = b.decode(encoding)
        return strconverter(s)
    return bytesconverter


def graph_data(stock):

    fig = plt.figure()
    ax1 = plt.subplot2grid((1,1), (0,0))

    stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv'
    source_code = urllib.request.urlopen(stock_price_url).read().decode()
    stock_data = []
    split_source = source_code.split('\n')
    for line in split_source:
        split_line = line.split(',')
        if len(split_line) == 6:
            if 'values' not in line and 'labels' not in line:
                stock_data.append(line)


    date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data,
                                                          delimiter=',',
                                                          unpack=True,
                                                          converters={0: bytespdate2num('%Y%m%d')})

    ax1.fill_between(date, 0, closep)

    for label in ax1.xaxis.get_ticklabels():
        label.set_rotation(45)
    ax1.grid(True)#, color='g', linestyle='-', linewidth=5)
    ax1.xaxis.label.set_color('c')
    ax1.yaxis.label.set_color('r')
    ax1.set_yticks([0,25,50,75])

    plt.xlabel('Date')
    plt.ylabel('Price')
    plt.title(stock)
    plt.legend()
    plt.subplots_adjust(left=0.09, bottom=0.20, right=0.94, top=0.90, wspace=0.2, hspace=0)
    plt.show()


graph_data('EBAY')
로그인 후 복사

결과는 다음과 같습니다.

Matplotlib에서 그래픽 색상 및 선 채우기

패딩의 한 가지 문제는 모든 것을 덮게 될 수도 있다는 것입니다. 투명성으로 해결할 수 있습니다:

ax1.fill_between(date, 0, closep)
로그인 후 복사
로그인 후 복사

이제 조건부 채우기를 소개하겠습니다. 차트의 시작 위치가 eBay 구매를 시작하는 곳이라고 가정해 보겠습니다. 여기서 가격이 이 가격보다 낮으면 원래 가격까지 패딩할 수 있고, 원래 가격을 초과하면 낮추면 됩니다. 다음과 같이 할 수 있습니다:

ax1.fill_between(date, closep[0], closep)
로그인 후 복사

는 다음을 생성합니다:

Matplotlib에서 그래픽 색상 및 선 채우기

빨간색과 녹색 채우기로 이익/손실을 표시하려면 녹색 채우기는 원래 가격에 비해 상승한 것입니다(참고: 해외증시와 국내반대) 하락에 적자? 괜찮아요! 다음과 같이 where 매개변수를 추가할 수 있습니다.

ax1.fill_between(date, closep, closep[0],where=(closep > closep[0]), facecolor='g', alpha=0.5)
로그인 후 복사

여기서 현재 가격과 원래 가격 사이, 즉 현재 가격이 원래 가격보다 높은 영역을 채웁니다. 이것은 상승이므로 전경색을 녹색으로 지정하고 약간의 투명도를 사용합니다.

Lines

채우기와 같은 다각형 데이터에는 여전히 레이블을 적용할 수 없지만 이전과 같이 빈 줄을 구현할 수 있으므로 다음과 같이 할 수 있습니다. 범례에 표시할 레이블 라인입니다. 전체 코드는 다음과 같습니다.

ax1.plot([],[],linewidth=5, label='loss', color='r',alpha=0.5)
ax1.plot([],[],linewidth=5, label='gain', color='g',alpha=0.5)
ax1.fill_between(date, closep, closep[0],where=(closep > closep[0]), facecolor='g', alpha=0.5)
ax1.fill_between(date, closep, closep[0],where=(closep < closep[0]), facecolor='r', alpha=0.5)
로그인 후 복사

이제 결과는 다음과 같습니다.

위 내용은 Matplotlib에서 그래픽 색상 및 선 채우기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿