2014-12-18 10 views
0

matplotlib에서 작업 중이며 막 대형 차트, 버블 차트 및 기타 그래프를 만들었습니다.Python에서 matplotlib를 사용하여 스파크 라인 만들기

라인 그래프와 스파크 라인 그래프의 차이점과 matplotlib를 사용하여 파이썬에서 스파크 선 그래프를 그리는 방법을 예제로 설명해주십시오. 다음 코드 선 그래프가 생성

import matplotlib.pyplot as plt 
import numpy as np 
x=[1,2,3,4,5] 
y=[5,7,2,6,2] 
plt.plot(x, y) 
plt.show() 

와 예를 들어

는 다음과 같습니다 : enter image description here

하지만 선형 차트 및 스파크 유치권 차트의 차이가 무엇인지 가져올 수 없습니다 동일한 데이터. 제발 이해 도와주세요

+1

1/스파크 선 그래프는 무엇입니까? 2/당신은 이미 당신 자신을 시험해 보았습니까? – Evert

+0

스파크 라인 그래프는 한 점에서 다른 점으로의 변화를 플롯하기위한 축이없이 그려집니다. 예를 들어 증권 거래 데이터의 경우 최근 1 주일의 마감일은 sparkline의 예입니다 –

+0

그 의견으로 질문을 업데이트 할 수 있습니까? 아니면 하나 이상의 스파크 라인 그래프에 대한 링크를 제공 할 수 있습니까? 그림이 1000 단어 이상을 말하는 곳. (나는 증권 거래소 종가의 음모를 꾸밀 수 있고, 그래프라고 부르지 만 스파크 라인이 아니므로 귀하의 설명/예는 실제로 도움이되지 않습니다.) – Evert

답변

5

sparkline graph은 모든 축을 제거한 단순한 플롯입니다. 매우 간단는 matplotlib 함께 할 수있는 :

import matplotlib.pyplot as plt 
import numpy as np 

# create some random data 
x = np.cumsum(np.random.rand(1000)-0.5) 

# plot it 
fig, ax = plt.subplots(1,1,figsize=(10,3)) 
plt.plot(x, color='k') 
plt.plot(len(x)-1, x[-1], color='r', marker='o') 

# remove all the axes 
for k,v in ax.spines.items(): 
    v.set_visible(False) 
ax.set_xticks([]) 
ax.set_yticks([]) 

#show it 
plt.show() 
+0

x의 값 수가 적다면 1000 대신 5 개의 값만 있다고 가정하면 선 그래프와 점화 선 그래프 사이에 큰 차이가 없음을 알 수 있습니다. 차이점을 알려 주시기 바랍니다 –

+2

차이는 없습니다. 스파크 라인 그래프 *는 라인 플롯입니다. 축이 보이지 않고 매우 평평하고 넓은 모양입니다. – hitzg

+0

목록의 길이가 매우 길고 데이터의 각 값에 많은 편차가있는 경우 x의 값 하나가 5이고 다른 값이 10000 인 경우와 같이 플롯이 효과적이지 않은 경우와 같이 변형을 표시 할 수있는 방법 배율을 사용할 수없는 경우 값 사이. –

3

스파크가 선 그림으로 만 축 또는 좌표없이 동일합니다. 그것들은 컴팩트 한 방법으로 데이터의 "모양"을 보여주기 위해 사용될 수 있습니다.

당신은 subplots 각 부가 적 줄거리에 대한 결과 Axeschanging properties를 사용하여 같은 그림의 여러 라인 플롯을 벼락 공부 할 수 있습니다

data = np.cumsum(np.random.rand(1000)-0.5) 
data = data - np.mean(data) 

fig = plt.figure() 
ax1 = fig.add_subplot(411) # nrows, ncols, plot_number, top sparkline 
ax1.plot(data, 'b-') 
ax1.axhline(c='grey', alpha=0.5) 

ax2 = fig.add_subplot(412, sharex=ax1) 
ax2.plot(data, 'g-') 
ax2.axhline(c='grey', alpha=0.5) 

ax3 = fig.add_subplot(413, sharex=ax1) 
ax3.plot(data, 'y-') 
ax3.axhline(c='grey', alpha=0.5) 

ax4 = fig.add_subplot(414, sharex=ax1) # bottom sparkline 
ax4.plot(data, 'r-') 
ax4.axhline(c='grey', alpha=0.5) 


for axes in [ax1, ax2, ax3, ax4]: # remove all borders 
    plt.setp(axes.get_xticklabels(), visible=False) 
    plt.setp(axes.get_yticklabels(), visible=False) 
    plt.setp(axes.get_xticklines(), visible=False) 
    plt.setp(axes.get_yticklines(), visible=False) 
    plt.setp(axes.spines.values(), visible=False) 


# bottom sparkline 
plt.setp(ax4.get_xticklabels(), visible=True) 
plt.setp(ax4.get_xticklines(), visible=True) 
ax4.xaxis.tick_bottom() # but onlyt the lower x ticks not x ticks at the top 

plt.tight_layout() 
plt.show() 

sparklines