Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fc3365b

Browse filesBrowse files
committed
Merge branch 'master' into high-level-widgets
2 parents afc0378 + daf6984 commit fc3365b
Copy full SHA for fc3365b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Dismiss banner
Expand file treeCollapse file tree

108 files changed

+931
-357
lines changed

‎examples/gridplot.ipynb

Copy file name to clipboardExpand all lines: examples/gridplot.ipynb
+63-37Lines changed: 63 additions & 37 deletions
Large diffs are not rendered by default.

‎examples/gridplot_simple.ipynb

Copy file name to clipboardExpand all lines: examples/gridplot_simple.ipynb
+209-21Lines changed: 209 additions & 21 deletions
Large diffs are not rendered by default.

‎examples/gridplot_simple.py

Copy file name to clipboard
+53Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import numpy as np
2+
from wgpu.gui.auto import WgpuCanvas
3+
import pygfx as gfx
4+
from fastplotlib.layouts import GridPlot
5+
from fastplotlib.graphics import ImageGraphic, LineGraphic, HistogramGraphic
6+
from fastplotlib import run
7+
from math import sin, cos, radians
8+
9+
# GridPlot of shape 2 x 3
10+
grid_plot = GridPlot(shape=(2, 3))
11+
12+
image_graphics = list()
13+
14+
hist_data1 = np.random.normal(0, 256, 2048)
15+
hist_data2 = np.random.poisson(0, 256)
16+
17+
# Make a random image graphic for each subplot
18+
for i, subplot in enumerate(grid_plot):
19+
img = np.random.rand(512, 512) * 255
20+
ig = ImageGraphic(data=img, vmin=0, vmax=255, cmap='gnuplot2')
21+
image_graphics.append(ig)
22+
23+
# add the graphic to the subplot
24+
subplot.add_graphic(ig)
25+
26+
histogram = HistogramGraphic(data=hist_data1, bins=100)
27+
histogram.world_object.rotation.w = cos(radians(45))
28+
histogram.world_object.rotation.z = sin(radians(45))
29+
30+
histogram.world_object.scale.y = 1
31+
histogram.world_object.scale.x = 8
32+
33+
for dv_position in ["right", "top", "bottom", "left"]:
34+
h2 = HistogramGraphic(data=hist_data1, bins=100)
35+
36+
subplot.docked_viewports[dv_position].size = 60
37+
subplot.docked_viewports[dv_position].add_graphic(h2)
38+
#
39+
40+
# Define a function to update the image graphics
41+
# with new randomly generated data
42+
def set_random_frame():
43+
for ig in image_graphics:
44+
new_data = np.random.rand(512, 512) * 255
45+
ig.update_data(data=new_data)
46+
47+
48+
# add the animation
49+
# grid_plot.add_animations(set_random_frame)
50+
51+
grid_plot.show()
52+
53+
run()

‎examples/histogram.ipynb

Copy file name to clipboardExpand all lines: examples/histogram.ipynb
+6-7Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
"outputs": [],
1111
"source": [
1212
"import numpy as np\n",
13-
"from matplotlib import pyplot as plt\n",
14-
"from fastplotlib import Plot, Histogram"
13+
"from fastplotlib import Plot"
1514
]
1615
},
1716
{
@@ -23,7 +22,7 @@
2322
{
2423
"data": {
2524
"application/vnd.jupyter.widget-view+json": {
26-
"model_id": "c2adf222a2fb4b5cab43c24aa9729a1a",
25+
"model_id": "bfd22d77d24549128dd925e4114c929e",
2726
"version_major": 2,
2827
"version_minor": 0
2928
},
@@ -51,14 +50,14 @@
5150
"name": "stderr",
5251
"output_type": "stream",
5352
"text": [
54-
"/home/kushal/Insync/kushalkolar@gmail.com/drive/repos/pygfx/pygfx/geometries/_plane.py:19: RuntimeWarning: invalid value encountered in true_divide\n",
53+
"/home/kushal/python-venvs/mescore/lib/python3.10/site-packages/pygfx/geometries/_plane.py:19: RuntimeWarning: invalid value encountered in true_divide\n",
5554
" texcoords = (positions[..., :2] + dim / 2) / dim\n"
5655
]
5756
},
5857
{
5958
"data": {
6059
"text/html": [
61-
"<div class='initial-snapshot-6b60165554804f6da43ad1b40f9baffa' style='position:relative;'><img src='data:image/png;base64,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' style='width:500.0px;height:300.0px;' /><div style='position: absolute; top:0; left:0; padding:1px 3px; background: #777; color:#fff; font-size: 90%; font-family:sans-serif; '>initial snapshot</div></div>"
60+
"<div class='initial-snapshot-36e4fff0aa7a4fc993c70f7cfc2aaf4a' style='position:relative;'><img src='data:image/png;base64,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' style='width:500.0px;height:300.0px;' /><div style='position: absolute; top:0; left:0; padding:1px 3px; background: #777; color:#fff; font-size: 90%; font-family:sans-serif; '>initial snapshot</div></div>"
6261
],
6362
"text/plain": [
6463
"<jupyter_rfb._utils.Snapshot object>"
@@ -70,7 +69,7 @@
7069
{
7170
"data": {
7271
"application/vnd.jupyter.widget-view+json": {
73-
"model_id": "6b60165554804f6da43ad1b40f9baffa",
72+
"model_id": "36e4fff0aa7a4fc993c70f7cfc2aaf4a",
7473
"version_major": 2,
7574
"version_minor": 0
7675
},
@@ -115,7 +114,7 @@
115114
"name": "python",
116115
"nbconvert_exporter": "python",
117116
"pygments_lexer": "ipython3",
118-
"version": "3.9.2"
117+
"version": "3.10.5"
119118
}
120119
},
121120
"nbformat": 4,

‎examples/lineplot.ipynb

Copy file name to clipboardExpand all lines: examples/lineplot.ipynb
+27-15Lines changed: 27 additions & 15 deletions
Large diffs are not rendered by default.

‎examples/scatter.ipynb

Copy file name to clipboardExpand all lines: examples/scatter.ipynb
+26-11Lines changed: 26 additions & 11 deletions
Large diffs are not rendered by default.

‎examples/simple.ipynb

Copy file name to clipboardExpand all lines: examples/simple.ipynb
+82-40Lines changed: 82 additions & 40 deletions
Large diffs are not rendered by default.

‎fastplotlib/__init__.py

Copy file name to clipboardExpand all lines: fastplotlib/__init__.py
+1-3Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
from .graphics import *
2-
from .layouts import GridPlot
3-
from .subplot import Subplot
41
from .plot import Plot
52
from pathlib import Path
3+
from wgpu.gui.auto import run
64

75

86
with open(Path(__file__).parent.joinpath("VERSION"), "r") as f:

‎fastplotlib/graphics/__init__.py

Copy file name to clipboard
+6-6Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from .histogram import Histogram
2-
from .line import Line
3-
from .scatter import Scatter
4-
from .image import Image
5-
from .heatmap import Heatmap
1+
from .histogram import HistogramGraphic
2+
from .line import LineGraphic
3+
from .scatter import ScatterGraphic
4+
from .image import ImageGraphic
5+
from .heatmap import HeatmapGraphic
66

7-
__all__ = ["Image", "Scatter", "Line", "Histogram", "Heatmap"]
7+
__all__ = ["ImageGraphic", "ScatterGraphic", "LineGraphic", "HistogramGraphic", "HeatmapGraphic"]

‎fastplotlib/graphics/heatmap.py

Copy file name to clipboardExpand all lines: fastplotlib/graphics/heatmap.py
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import numpy as np
22
import pygfx
33
from typing import *
4-
from .image import Image
4+
from .image import ImageGraphic
55

66
from ..utils import quick_min_max, get_cmap_texture
77

@@ -40,7 +40,7 @@ def __init__(
4040
self.callbacks = callbacks
4141

4242

43-
class Heatmap(Image):
43+
class HeatmapGraphic(ImageGraphic):
4444
def __init__(
4545
self,
4646
data: np.ndarray,

‎fastplotlib/graphics/histogram.py

Copy file name to clipboardExpand all lines: fastplotlib/graphics/histogram.py
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __int__(self, *args, **kwargs):
1414
self.frequency: Union[int, float] = None
1515

1616

17-
class Histogram(Graphic):
17+
class HistogramGraphic(Graphic):
1818
def __init__(
1919
self,
2020
data: np.ndarray = None,
@@ -57,7 +57,7 @@ def __init__(
5757

5858
data = np.vstack([x_positions_bins, self.hist])
5959

60-
super(Histogram, self).__init__(data=data, colors=colors, colors_length=n_bins, **kwargs)
60+
super(HistogramGraphic, self).__init__(data=data, colors=colors, colors_length=n_bins, **kwargs)
6161

6262
self.world_object: pygfx.Group = pygfx.Group()
6363

‎fastplotlib/graphics/image.py

Copy file name to clipboardExpand all lines: fastplotlib/graphics/image.py
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from ..utils import quick_min_max, get_cmap_texture
88

99

10-
class Image(Graphic):
10+
class ImageGraphic(Graphic):
1111
def __init__(
1212
self,
1313
data: np.ndarray,
@@ -44,4 +44,5 @@ def update_data(self, data: np.ndarray):
4444

4545
def update_cmap(self, cmap: str, alpha: float = 1.0):
4646
self.world_object.material.map = get_cmap_texture(name=cmap)
47+
self.world_object.geometry.grid.update_range((0, 0, 0), self.world_object.geometry.grid.size)
4748

‎fastplotlib/graphics/line.py

Copy file name to clipboardExpand all lines: fastplotlib/graphics/line.py
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
from ._base import Graphic
55

66

7-
class Line(Graphic):
7+
class LineGraphic(Graphic):
88
def __init__(self, data: np.ndarray, zlevel: float = None, size: float = 2.0, colors: np.ndarray = None, cmap: str = None, *args, **kwargs):
9-
super(Line, self).__init__(data, colors=colors, cmap=cmap, *args, **kwargs)
9+
super(LineGraphic, self).__init__(data, colors=colors, cmap=cmap, *args, **kwargs)
1010

1111
self.zlevel = zlevel
1212

@@ -49,7 +49,7 @@ def update_data(self, data: np.ndarray):
4949
self.world_object.geometry.positions.update_range()
5050

5151
def update_colors(self, colors: np.ndarray):
52-
super(Line, self)._set_colors(colors=colors, colors_length=self.data.shape[0], cmap=None, alpha=None)
52+
super(LineGraphic, self)._set_colors(colors=colors, colors_length=self.data.shape[0], cmap=None, alpha=None)
5353

5454
self.world_object.geometry.colors.data[:] = self.colors
5555
self.world_object.geometry.colors.update_range()

‎fastplotlib/graphics/scatter.py

Copy file name to clipboardExpand all lines: fastplotlib/graphics/scatter.py
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
from ._base import Graphic
77

88

9-
class Scatter(Graphic):
9+
class ScatterGraphic(Graphic):
1010
def __init__(self, data: np.ndarray, zlevel: float = None, size: int = 1, colors: np.ndarray = None, cmap: str = None, *args, **kwargs):
11-
super(Scatter, self).__init__(data, colors=colors, cmap=cmap, *args, **kwargs)
11+
super(ScatterGraphic, self).__init__(data, colors=colors, cmap=cmap, *args, **kwargs)
1212

1313
if self.data.ndim == 1:
1414
# assume single 3D point

‎fastplotlib/layouts/__init__.py

Copy file name to clipboard
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from ._gridplot import GridPlot
2+
3+
__all__ = [
4+
"GridPlot"
5+
]

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.