File: test_matplotlib_export.py

package info (click to toggle)
orange3 3.40.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 15,908 kB
  • sloc: python: 162,745; ansic: 622; makefile: 322; sh: 93; cpp: 77
file content (44 lines) | stat: -rw-r--r-- 1,581 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import pyqtgraph as pg

from AnyQt.QtCore import QRectF

import Orange

from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.utils.matplotlib_export import scatterplot_code
from Orange.widgets.visualize.owscatterplot import OWScatterPlot


def add_intro(a):
    r = "import matplotlib.pyplot as plt\n" + \
        "import numpy as np\n" + \
        "from numpy import array\n" + \
        "plt.clf()"
    return r + a


class TestScatterPlot(WidgetTest):

    def test_owscatterplot_ignore_empty(self):
        iris = Orange.data.Table("iris")
        self.widget = self.create_widget(OWScatterPlot)
        self.send_signal(OWScatterPlot.Inputs.data, iris[::10])
        code = scatterplot_code(self.widget.graph.scatterplot_item)
        self.assertIn("plt.scatter", code)
        # tbe selected graph has to generate nothing
        code = scatterplot_code(self.widget.graph.scatterplot_item_sel)
        self.assertEqual(code, "")
        # for a selection the selected graph has to be non-empty
        self.widget.graph.select_by_rectangle(QRectF(4, 3, 3, 1))
        code = scatterplot_code(self.widget.graph.scatterplot_item_sel)
        self.assertIn("plt.scatter", code)
        exec(add_intro(code), {})

    def test_scatterplot_simple(self):
        plotWidget = pg.PlotWidget(background="w")
        scatterplot = pg.ScatterPlotItem()
        scatterplot.setData(x=[1, 2, 3], y=[3, 2, 1])
        plotWidget.addItem(scatterplot)
        code = scatterplot_code(scatterplot)
        self.assertIn("plt.scatter", code)
        exec(add_intro(code), {})