Source code for pymodaq_gui.examples.view2D_parts
import numpy as np
from qtpy import QtWidgets
from pymodaq_data import DataToExport, DataRaw, Axis
from pymodaq_gui.utils.utils import mkQApp
from pymodaq_gui.plotting.data_viewers.viewer2D import Viewer2D
[docs]
def main(data_distribution='uniform'):
"""either 'uniform' or 'spread'"""
app = mkQApp('Viewer2D')
widget = QtWidgets.QWidget()
if data_distribution == 'uniform':
data_to_plot = generate_uniform_data()
elif data_distribution == 'spread':
data_spread = np.load('../../../resources/triangulation_data.npy')
data_to_plot = DataRaw(name='mydata',
distribution='spread',
data=[data_spread[:,2]],
nav_indexes=(0,),
axes=[Axis('xaxis', units='xpxl', data=data_spread[:,0], index=0, spread_order=0),
Axis('yaxis', units='ypxl', data=data_spread[:,1], index=0, spread_order=1)])
prog = Viewer2D(widget)
widget.show()
prog.view.get_action('histo').trigger()
prog.view.get_action('autolevels').trigger()
prog.show_data(data_to_plot)
app.exec()
[docs]
def generate_uniform_data() -> DataRaw:
from pymodaq_utils.math_utils import gauss2D
Nx = 100
Ny = Nx // 2
data_random = np.random.normal(size=(Ny, Nx))
xscaling, xoffset = 1, 20
yscaling, yoffset = 1, 40
x = xscaling * np.linspace(0, Nx - 1, Nx) + xoffset
y = yscaling * np.linspace(0, Ny - 1, Ny) + yoffset
print(x)
print(y)
x0 = 45 + xoffset
y0 = 25 + yoffset
data_red = 20 * np.cos((x-x0) / 5) * gauss2D(x, x0, Nx / 10, y, y0, Ny / 10, 1, 90) + 0.5 * data_random
data_to_plot = DataRaw(name='mydata', distribution='uniform',
data=[data_red],
labels=['myreddata'],
axes=[Axis('xaxis', units='xpxl', data=x, index=1),
Axis('yaxis', units='ypxl', data=y, index=0)])
return data_to_plot
if __name__ == '__main__': # pragma: no cover
main()