2017-06-13 69 views
3

我想用python/pandas/matplotlib創建一個如下所示的圖。上面的剪輯是沒有問題的,但我還沒有能夠得到像下面的剪輯一樣的情節。我可以在gnuplot中做到這一點,其中相當的情節風格是'衝動'。這可能與matplotlib?如果這是不可能的matplotlib是否有另一個python圖形包將工作?如何用matplotlib繪製像gnuplot's'with impulses'這樣的風格?

The gnuplot style for the lower clip is 'with impulses'

+0

貌似可以通過在上一個是正常情節和下一個是barplot使用副區產生兩個樣地sharedx獲得這種簡單。但也許你應該解釋這些價值觀的理論,以便我們不需要對此進行反向工程。如果您希望某人發佈現成的代碼,那麼如果您提供一個簡單的數據示例,則會更容易。 – sascha

+0

每個週期下片段有兩個值。創52周新高的股票數量再創新低。新的高點是一個正數,用綠色脈衝繪製在零線上方,新的低點是負數,用紅色脈衝繪製在零線下方。 – John

+0

該圖表是由c程序使用libpng創建的,因此我的示例代碼不會非常有用。我得到了上面的剪輯和sharex部分,但我無法在創建下面的剪輯時找到任何地方。 – John

回答

5

創建這樣一個情節最簡單的方法是使用pyplot.stem。 可以找到一個例子here

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0.1, 6*np.pi, 50) 
plt.stem(x, np.cos(x)+1, linefmt='g-', markerfmt=' ') 
plt.stem(x, -np.sin(x)-1, linefmt='r-', markerfmt=' ', basefmt="gray") 

plt.show() 

enter image description here

另一種選擇是使用pyplot.vlines

+0

我不知道'vlines'非常有用! – heltonbiker

+0

輝煌。謝謝! – John

+0

@John你現在有超過15代表,並可以投票。隨意投票這個答案,除了接受它thx :-) [當有人回答我的問題時怎麼辦](https://stackoverflow.com/help/someone-answers) – piRSquared

1

這是一個使用vlines作爲@ImportanceOfBeingErnes建議的工作示例,這引發了另一個問題。一種解決方案比另一種更好嗎?某種程度上更高效或更好?

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0.1, 6*np.pi, 50) 
plt.vlines(x, 0, np.cos(x)+1, color='g') 
plt.vlines(x, 0, -np.sin(x)-1, color='r') 
plt.show() 

enter image description here

+0

我選擇使用vlines在我的應用它的速度比詞幹快。完成後,我會發佈一個完整的示例。 – John