本文整理汇总了Python中pyqtgraph.graphicsItems.ScatterPlotItem.setSymbol方法的典型用法代码示例。如果您正苦于以下问题:Python ScatterPlotItem.setSymbol方法的具体用法?Python ScatterPlotItem.setSymbol怎么用?Python ScatterPlotItem.setSymbol使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyqtgraph.graphicsItems.ScatterPlotItem
的用法示例。
在下文中一共展示了ScatterPlotItem.setSymbol方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: OWScatterPlotGraph
# 需要导入模块: from pyqtgraph.graphicsItems import ScatterPlotItem [as 别名]
# 或者: from pyqtgraph.graphicsItems.ScatterPlotItem import setSymbol [as 别名]
#.........这里部分代码省略.........
black = pg.mkColor(0, 0, 0)
for label, text in zip(self.labels, label_data):
label.setText(text, black)
def get_shape_index(self):
shape_index = -1
attr_shape = self.attr_shape
if attr_shape and attr_shape != "(Same shape)" and \
len(self.data_domain[attr_shape].values) <= \
len(self.CurveSymbols):
shape_index = self.attribute_name_index[attr_shape]
return shape_index
def compute_symbols(self):
self.master.information(self.ID_MISSING_SHAPE)
shape_index = self.get_shape_index()
if shape_index == -1:
shape_data = self.CurveSymbols[np.zeros(self.n_points, dtype=int)]
else:
shape_data = self.original_data[shape_index, self.valid_data]
nans = np.isnan(shape_data)
if np.any(nans):
shape_data[nans] = len(self.CurveSymbols) - 1
self.master.information(
self.ID_MISSING_SHAPE,
"Points with undefined '{}' are shown as crossed circles".
format(self.attr_shape))
shape_data = self.CurveSymbols[shape_data.astype(int)]
return shape_data
def update_shapes(self):
if self.scatterplot_item:
shape_data = self.compute_symbols()
self.scatterplot_item.setSymbol(shape_data)
self.make_legend()
def update_grid(self):
self.plot_widget.showGrid(x=self.show_grid, y=self.show_grid)
def update_legend(self):
if self.legend:
self.legend.setVisible(self.show_legend)
def create_legend(self):
self.legend = LegendItem()
self.legend.setParentItem(self.plot_widget.getViewBox())
self.legend.restoreAnchor(self.__legend_anchor)
def remove_legend(self):
if self.legend:
anchor = legend_anchor_pos(self.legend)
if anchor is not None:
self.__legend_anchor = anchor
self.legend.setParent(None)
self.legend = None
if self.color_legend:
anchor = legend_anchor_pos(self.color_legend)
if anchor is not None:
self.__color_legend_anchor = anchor
self.color_legend.setParent(None)
self.color_legend = None
def make_legend(self):
self.remove_legend()
self.make_color_legend()
self.make_shape_legend()
示例2: OWScatterPlotBase
# 需要导入模块: from pyqtgraph.graphicsItems import ScatterPlotItem [as 别名]
# 或者: from pyqtgraph.graphicsItems.ScatterPlotItem import setSymbol [as 别名]
class OWScatterPlotBase(gui.OWComponent, QObject):
"""
Provide a graph component for widgets that show any kind of point plot
The component plots a set of points with given coordinates, shapes,
sizes and colors. Its function is similar to that of a *view*, whereas
the widget represents a *model* and a *controler*.
The model (widget) needs to provide methods:
- `get_coordinates_data`, `get_size_data`, `get_color_data`,
`get_shape_data`, `get_label_data`, which return a 1d array (or two
arrays, for `get_coordinates_data`) of `dtype` `float64`, except for
`get_label_data`, which returns formatted labels;
- `get_color_labels`, `get_shape_labels`, which are return lists of
strings used for the color and shape legend;
- `get_tooltip`, which gives a tooltip for a single data point
- (optional) `impute_sizes`, `impute_shapes` get final coordinates and
shapes, and replace nans;
- `get_subset_mask` returns a bool array indicating whether a
data point is in the subset or not (e.g. in the 'Data Subset' signal
in the Scatter plot and similar widgets);
- `get_palette` returns a palette appropriate for visualizing the
current color data;
- `is_continuous_color` decides the type of the color legend;
The widget (in a role of controller) must also provide methods
- `selection_changed`
If `get_coordinates_data` returns `(None, None)`, the plot is cleared. If
`get_size_data`, `get_color_data` or `get_shape_data` return `None`,
all points will have the same size, color or shape, respectively.
If `get_label_data` returns `None`, there are no labels.
The view (this compomnent) provides methods `update_coordinates`,
`update_sizes`, `update_colors`, `update_shapes` and `update_labels`
that the widget (in a role of a controler) should call when any of
these properties are changed. If the widget calls, for instance, the
plot's `update_colors`, the plot will react by calling the widget's
`get_color_data` as well as the widget's methods needed to construct the
legend.
The view also provides a method `reset_graph`, which should be called only
when
- the widget gets entirely new data
- the number of points may have changed, for instance when selecting
a different attribute for x or y in the scatter plot, where the points
with missing x or y coordinates are hidden.
Every `update_something` calls the plot's `get_something`, which
calls the model's `get_something_data`, then it transforms this data
into whatever is needed (colors, shapes, scaled sizes) and changes the
plot. For the simplest example, here is `update_shapes`:
```
def update_shapes(self):
if self.scatterplot_item:
shape_data = self.get_shapes()
self.scatterplot_item.setSymbol(shape_data)
self.update_legends()
def get_shapes(self):
shape_data = self.master.get_shape_data()
shape_data = self.master.impute_shapes(
shape_data, len(self.CurveSymbols) - 1)
return self.CurveSymbols[shape_data]
```
On the widget's side, `get_something_data` is essentially just:
```
def get_size_data(self):
return self.get_column(self.attr_size)
```
where `get_column` retrieves a column while also filtering out the
points with missing x and y and so forth. (Here we present the simplest
two cases, "shapes" for the view and "sizes" for the model. The colors
for the view are more complicated since they deal with discrete and
continuous palettes, and the shapes for the view merge infrequent shapes.)
The plot can also show just a random sample of the data. The sample size is
set by `set_sample_size`, and the rest is taken care by the plot: the
widget keeps providing the data for all points, selection indices refer
to the entire set etc. Internally, sampling happens as early as possible
(in methods `get_<something>`).
"""
too_many_labels = Signal(bool)
label_only_selected = Setting(False)
point_width = Setting(10)
alpha_value = Setting(128)
show_grid = Setting(False)
show_legend = Setting(True)
class_density = Setting(False)
jitter_size = Setting(0)
resolution = 256
CurveSymbols = np.array("o x t + d s t2 t3 p h star ?".split())
#.........这里部分代码省略.........
示例3: OWScatterPlotGraph
# 需要导入模块: from pyqtgraph.graphicsItems import ScatterPlotItem [as 别名]
# 或者: from pyqtgraph.graphicsItems.ScatterPlotItem import setSymbol [as 别名]
#.........这里部分代码省略.........
label.setText("")
return
if not self.labels:
self.create_labels()
label_column = self.raw_data.get_column_view(self.attr_label)[0]
formatter = self.raw_data.domain[self.attr_label].str_val
label_data = map(formatter, label_column)
black = pg.mkColor(0, 0, 0)
for label, text in zip(self.labels, label_data):
label.setText(text, black)
def get_shape_index(self):
shape_index = -1
attr_shape = self.attr_shape
if attr_shape and attr_shape != "(Same shape)" and \
len(self.data_domain[attr_shape].values) <= \
len(self.CurveSymbols):
shape_index = self.attribute_name_index[attr_shape]
return shape_index
def compute_symbols(self):
shape_index = self.get_shape_index()
if shape_index == -1:
shape_data = self.CurveSymbols[np.zeros(self.n_points, dtype=int)]
else:
shape_data = self.original_data[shape_index]
shape_data[np.isnan(shape_data)] = len(self.CurveSymbols) - 1
shape_data = self.CurveSymbols[shape_data.astype(int)]
return shape_data
def update_shapes(self):
if self.scatterplot_item:
shape_data = self.compute_symbols()
self.scatterplot_item.setSymbol(shape_data)
self.make_legend()
def update_grid(self):
self.plot_widget.showGrid(x=self.show_grid, y=self.show_grid)
def update_legend(self):
if self.legend:
self.legend.setVisible(self.show_legend)
def create_legend(self):
self.legend = PositionedLegendItem(self.plot_widget.plotItem, self)
def remove_legend(self):
if self.legend:
self.legend.setParent(None)
self.legend = None
if self.color_legend:
self.color_legend.setParent(None)
self.color_legend = None
def make_legend(self):
self.remove_legend()
self.make_color_legend()
self.make_shape_legend()
self.update_legend()
def make_color_legend(self):
color_index = self.get_color_index()
if color_index == -1:
return
color_var = self.data_domain[color_index]
use_shape = self.get_shape_index() == color_index
示例4: OWScatterPlotGraph
# 需要导入模块: from pyqtgraph.graphicsItems import ScatterPlotItem [as 别名]
# 或者: from pyqtgraph.graphicsItems.ScatterPlotItem import setSymbol [as 别名]
#.........这里部分代码省略.........
self.assure_attribute_present(self.attr_label)
if not self.labels:
self.create_labels()
label_column = self._create_label_column()
formatter = self.attr_label.str_val
label_data = map(formatter, label_column)
black = pg.mkColor(0, 0, 0)
selection = self.selection[self.valid_data] if self.selection is not None else []
if self.label_only_selected:
for label, text, selected \
in zip(self.labels, label_data, selection):
label.setText(text if selected else "", black)
else:
for label, text in zip(self.labels, label_data):
label.setText(text, black)
def compute_symbols(self):
self.master.Information.missing_shape.clear()
if self.attr_shape is None:
shape_data = self.CurveSymbols[np.zeros(self.n_points, dtype=int)]
else:
shape_data = self._get_data(self.attr_shape)
nans = np.isnan(shape_data)
if np.any(nans):
shape_data[nans] = len(self.CurveSymbols) - 1
self.master.Information.missing_shape(self.attr_shape)
shape_data = self.CurveSymbols[shape_data.astype(int)]
return shape_data
def update_shapes(self):
self.assure_attribute_present(self.attr_shape)
if self.scatterplot_item:
shape_data = self.compute_symbols()
self.scatterplot_item.setSymbol(shape_data)
self.make_legend()
def assure_attribute_present(self, attr):
if self.data is not None and attr not in self.data.domain:
self.set_data(self.sparse_to_dense())
def update_grid(self):
self.plot_widget.showGrid(x=self.show_grid, y=self.show_grid)
def update_legend(self):
if self.legend:
self.legend.setVisible(self.show_legend)
def create_legend(self):
self.legend = LegendItem()
self.legend.setParentItem(self.plot_widget.getViewBox())
self.legend.restoreAnchor(self.__legend_anchor)
def remove_legend(self):
if self.legend:
anchor = legend_anchor_pos(self.legend)
if anchor is not None:
self.__legend_anchor = anchor
self.legend.setParent(None)
self.legend = None
if self.color_legend:
anchor = legend_anchor_pos(self.color_legend)
if anchor is not None:
self.__color_legend_anchor = anchor
self.color_legend.setParent(None)
self.color_legend = None
示例5: OWLinearProjection
# 需要导入模块: from pyqtgraph.graphicsItems import ScatterPlotItem [as 别名]
# 或者: from pyqtgraph.graphicsItems.ScatterPlotItem import setSymbol [as 别名]
#.........这里部分代码省略.........
legend = self.__legend
legend.clear()
color_var, shape_var = self.color_var(), self.shape_var()
if color_var is not None and not color_var.is_discrete:
color_var = None
assert shape_var is None or shape_var.is_discrete
if color_var is None and shape_var is None:
legend.setParentItem(None)
legend.hide()
return
else:
if legend.parentItem() is None:
legend.setParentItem(self.viewbox)
legend.setVisible(True)
palette = self.discrete_palette
symbols = list(ScatterPlotItem.Symbols)
if shape_var is color_var:
items = [(palette[i], symbols[i], name)
for i, name in enumerate(color_var.values)]
else:
colors = shapes = []
if color_var is not None:
colors = [(palette[i], "o", name)
for i, name in enumerate(color_var.values)]
if shape_var is not None:
shapes = [(QtGui.QColor(Qt.gray),
symbols[i % (len(symbols) - 1)], name)
for i, name in enumerate(shape_var.values)]
items = colors + shapes
for color, symbol, name in items:
legend.addItem(
ScatterPlotItem(pen=color, brush=color, symbol=symbol, size=10),
name
)
def set_shape(self, shape):
"""
Set (update) the current point shape map.
"""
if self._item is not None:
self._item.setSymbol(shape[self._item._mask])
def set_size(self, size):
"""
Set (update) the current point size.
"""
if self._item is not None:
self._item.setSize(size[self._item._mask])
def _set_alpha(self, value):
self.alpha_value = value
self._on_color_change()
def _set_size(self, value):
self.point_size = value
self._on_size_change()
def _selection_finish(self, path):
self.select(path)
def select(self, selectionshape):
item = self._item
if item is None:
return
indices = [spot.data()
for spot in item.points()
if selectionshape.contains(spot.pos())]
if QApplication.keyboardModifiers() & Qt.ControlModifier:
self.select_indices(indices)
else:
self._selection_mask = None
self.select_indices(indices)
def select_indices(self, indices):
if self.data is None:
return
if self._selection_mask is None:
self._selection_mask = numpy.zeros(len(self.data), dtype=bool)
self._selection_mask[indices] = True
self._on_color_change()
self.commit()
def commit(self):
subset = None
if self.data is not None and self._selection_mask is not None:
indices = numpy.flatnonzero(self._selection_mask)
if len(indices) > 0:
subset = self.data[indices]
self.send("Selected Data", subset)