2011-11-25 83 views
23

我正在製作一個項目的歷史股票數據的可視化,並且我想強調一些項目的區域。例如,當股票大幅下跌時,我想用紅色區域來突出顯示。在matplotlib圖中,我可以突出顯示特定的x值範圍嗎?

我可以自動執行此操作,還是必須繪製矩形或其他東西?

+0

你可以自動繪製一個矩形...你已經有了它定義了待高亮區域的開始/停止x值?如果是這樣,你可以繪製一個矩形的補丁來突出顯示該部分(讓我知道如果你需要一個例子!) – Daan

回答

45

看看axvspan(和axhspan用於突出顯示y軸的區域)。

import matplotlib.pyplot as plt 

plt.plot(range(10)) 
plt.axvspan(3, 6, color='red', alpha=0.5) 
plt.show() 

enter image description here

如果您使用的日期,那麼你就需要轉換的最小和最大x值來matplotlib日期。對於datetime對象使用matplotlib.dates.date2num或對於各種字符串時間戳使用matplotlib.dates.datestr2num

import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 
import datetime as dt 

t = mdates.drange(dt.datetime(2011, 10, 15), dt.datetime(2011, 11, 27), 
        dt.timedelta(hours=2)) 
y = np.sin(t) 

fig, ax = plt.subplots() 
ax.plot_date(t, y, 'b-') 
ax.axvspan(*mdates.datestr2num(['10/27/2011', '11/2/2011']), color='red', alpha=0.5) 
fig.autofmt_xdate() 
plt.show() 

enter image description here

+0

我使用的日期爲我的x軸,我有麻煩讓它工作。有小費嗎? – Alex

+0

查看修改。你需要將你的日期轉換爲matplotlib的內部日期格式(它只是一個浮點數,其中1的範圍對應於1天)。查看'matplotlib.dates'來處理各種函數。希望有所幫助! –

+0

這可以在3D情節中完成嗎?我想突出顯示沿z軸的特定切片的XY平面。 – Kartik

相關問題