Matplotlib는 다양한 하드카피 형식과 다양한 플랫폼의 대화형 환경에서 출판 품질의 그래픽을 생성할 수 있는 Python 2D 플로팅 라이브러리입니다.
마지막 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')
결과는 다음과 같습니다.
패딩의 한 가지 문제는 모든 것을 덮게 될 수도 있다는 것입니다. 투명성으로 해결할 수 있습니다:
ax1.fill_between(date, 0, closep)
이제 조건부 채우기를 소개하겠습니다. 차트의 시작 위치가 eBay 구매를 시작하는 곳이라고 가정해 보겠습니다. 여기서 가격이 이 가격보다 낮으면 원래 가격까지 패딩할 수 있고, 원래 가격을 초과하면 낮추면 됩니다. 다음과 같이 할 수 있습니다:
ax1.fill_between(date, closep[0], closep)
는 다음을 생성합니다:
빨간색과 녹색 채우기로 이익/손실을 표시하려면 녹색 채우기는 원래 가격에 비해 상승한 것입니다(참고: 해외증시와 국내반대) 하락에 적자? 괜찮아요! 다음과 같이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!