Added regular scatterplot with size and color options
This commit is contained in:
parent
a5c5987fc3
commit
edd7d47cf1
|
@ -499,6 +499,65 @@ has no color and size options."""
|
||||||
self._toolbar.forward() #update data lims before draw
|
self._toolbar.forward() #update data lims before draw
|
||||||
self.canvas.draw()
|
self.canvas.draw()
|
||||||
|
|
||||||
|
class ScatterPlot(Plot):
|
||||||
|
"""The ScatterMarkerPlot is faster than regular scatterplot, but
|
||||||
|
has no color and size options."""
|
||||||
|
def __init__(self, dataset_1, dataset_2, id_dim, sel_dim, id_1, id_2,c='b',s=30, name="Scatter plot"):
|
||||||
|
Plot.__init__(self, name)
|
||||||
|
self.ax = ax = self.fig.add_subplot(111)
|
||||||
|
self.current_dim = id_dim
|
||||||
|
self.dataset_1 = dataset_1
|
||||||
|
|
||||||
|
x_index = dataset_1[sel_dim][id_1]
|
||||||
|
y_index = dataset_2[sel_dim][id_2]
|
||||||
|
|
||||||
|
self.xaxis_data = dataset_1._array[:,x_index]
|
||||||
|
self.yaxis_data = dataset_2._array[:,y_index]
|
||||||
|
|
||||||
|
ax.scatter(self.xaxis_data,self.yaxis_data,s=s,c=c,faceted=False,edgecolor='k')
|
||||||
|
ax.set_title(self.get_title())
|
||||||
|
ax.set_xlabel("%s - %s" % (sel_dim, id_1))
|
||||||
|
ax.set_ylabel("%s - %s" % (sel_dim, id_2))
|
||||||
|
|
||||||
|
# collection
|
||||||
|
self.coll = ax.collections[0]
|
||||||
|
###
|
||||||
|
self.add(self.canvas)
|
||||||
|
self.canvas.show()
|
||||||
|
|
||||||
|
self._toolbar = NavToolbar(self.canvas, None)
|
||||||
|
self._toolbar.set_property('show-arrow', False)
|
||||||
|
self._toolbar.set_select_callback(self.rectangle_select_callback)
|
||||||
|
|
||||||
|
def get_toolbar(self):
|
||||||
|
return self._toolbar
|
||||||
|
|
||||||
|
def rectangle_select_callback(self, x1, y1, x2, y2):
|
||||||
|
ydata = self.yaxis_data
|
||||||
|
xdata = self.xaxis_data
|
||||||
|
|
||||||
|
# find indices of selected area
|
||||||
|
if x1>x2:
|
||||||
|
x1, x2 = x2, x1
|
||||||
|
if y1>y2:
|
||||||
|
y1, y2 = y2, y1
|
||||||
|
assert x1<=x2
|
||||||
|
assert y1<=y2
|
||||||
|
|
||||||
|
index = scipy.nonzero((xdata>x1) & (xdata<x2) & (ydata>y1) & (ydata<y2))
|
||||||
|
|
||||||
|
ids = self.dataset_1.get_identifiers(self.current_dim, index)
|
||||||
|
self.selection_listener(self.current_dim, ids)
|
||||||
|
|
||||||
|
def selection_changed(self, selection):
|
||||||
|
ids = selection[self.current_dim] # current identifiers
|
||||||
|
index = self.dataset_1.get_indices(self.current_dim, ids)
|
||||||
|
lw = scipy.zeros(self.xaxis_data.shape,'f')
|
||||||
|
scipy.put(lw,index,2.)
|
||||||
|
self.coll.set_linewidth(lw)
|
||||||
|
self._toolbar.forward() #update data lims before draw
|
||||||
|
self.canvas.draw()
|
||||||
|
|
||||||
class NetworkPlot(Plot):
|
class NetworkPlot(Plot):
|
||||||
def __init__(self, dataset, **kw):
|
def __init__(self, dataset, **kw):
|
||||||
# Set member variables and call superclass' constructor
|
# Set member variables and call superclass' constructor
|
||||||
|
|
Reference in New Issue