2012-03-26 72 views
3

我想刪除一些數據繪製在python matplotlib上的散點圖。我繪製了一些分散的數據和一些「陰謀」行數據MatPlotLib Scatterplot去除

要刪除我用的是「陰謀」行數據:del self.plot1.lines[0]

什麼是等效的命令刪除散點圖?我似乎無法找到它。

回答

1

散點圖實際上是一系列線條(圓圈要求嚴格)。

如果您將散點圖存儲在可以訪問其屬性的對象中,則其中一個名爲set_visible。這裏有一個例子:

""" 
make a scatter plot with varying color and size arguments 
code mostly from: 
http://matplotlib.sourceforge.net/mpl_examples/pylab_examples/scatter_demo2.py 
""" 
import matplotlib 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.mlab as mlab 
import matplotlib.cbook as cbook 

# load a numpy record array from yahoo csv data with fields date, 
# open, close, volume, adj_close from the mpl-data/example directory. 
# The record array stores python datetime.date as an object array in 
# the date column 
datafile = cbook.get_sample_data('/usr/share/matplotlib/sampledata/goog.npy') 
#datafile = /usr/share/matplotlib/sampledata 
r = np.load(datafile).view(np.recarray) 
r = r[-250:] # get the most recent 250 trading days 

delta1 = np.diff(r.adj_close)/r.adj_close[:-1] 

# size in points ^2 
volume = (15*r.volume[:-2]/r.volume[0])**2 
close = 0.003*r.close[:-2]/0.003*r.open[:-2] 

fig = plt.figure() 
ax = fig.add_subplot(111) 
## store the scatter in abc object 
abc=ax.scatter(delta1[:-1], delta1[1:], c=close, s=volume, alpha=0.75) 
### if you comment that line of set False to True, you'll see what happens. 
abc.set_visible(False) 
#ticks = arange(-0.06, 0.061, 0.02) 
#xticks(ticks) 
#yticks(ticks) 

ax.set_xlabel(r'$\Delta_i$', fontsize=20) 
ax.set_ylabel(r'$\Delta_{i+1}$', fontsize=20) 
ax.set_title('Volume and percent change') 
ax.grid(True) 

plt.show() 
+0

有幫助,但不是我(或我認爲提問者)正在尋找的東西。 – Poik 2013-02-07 16:14:43

4

Oz123's answer部分地回答了這個問題,但他的解決方案將線性膨脹你的圖形大小在內存中。如果你正在處理大量數據,這不是一個選項。

謝天謝地,其中一個散點圖對象的方法是remove

如果將行abc.set_visible(False)更改爲abc.remove(),結果看起來是相同的,但散點圖現在實際上已從圖中刪除,而不是設置爲不可見。

+0

感謝您的分享! – Oz123 2013-02-08 12:03:20