Hi,
There is nothing fundamentally wrong with what you are doing. You can just
keep creating ImageItems and adding them to the plot with appropriate scale
and translate transforms applied. I have no idea how many you'd need to add
before you run into performance issues. Obviously, with a very large data
set you'd want to slice and/or downsample your data depending on the view
range of the plot. If your spectral slices are small (a few data points)
you may want to merge slices together (say 256--1024 pixels wide).
Here's some code which demonstrates the "new" way to do the translate and
scale:
# ...
# plot = pyqtgraph plotitem
# Keep list of image items
spec_images = []
# Loop through existing data slices
# (or add each slice as they are acquired)
for specslice in specslices:
# ...
# t = time axis coordinates of slice
# f = frequency axis of slice(s)
# Compute scale factors for each image dimension
# (if identical for each slice, could compute outside the loop instead)
f_scale = (f[-1] - f[0])/(f.shape[0]-1) if f.shape[0] > 1 else 1.0
t_scale = (t[-1] - t[0])/(t.shape[0]-1) if t.shape[0] > 1 else 1.0
#...
tr = QtGui.QTransform()
# Centre pixels on the data points
tr.translate(t[0] - t_scale/2, f[0] - f_scale/2)
tr.scale(t_scale, f_scale)
image = pg.ImageItem(specslice)
image.setTransform(tr)
plot.addItem(image)
spec_images.append(image)
Patrick
On Saturday, 18 September 2021 at 5:29:42 am UTC+9:30
[email protected] wrote:
> Dear all,
>
> because matplotlib.pyplot is slow, I want to use pyqtgraph to display
> plots of scalar-valued functions of two variables. The figures I want to
> achieve are similar to contour plots or heat plots, in general they are
> false color displays of scalar-valued functions of two variables. In my
> special case they are parts of spectrogram data, which are combined to the
> plot of a whole spectrogram.
>
> My question is, if there is already a function or an object in pyqtgraph
> available, which is suitable to combine these parts of the spectrogram to a
> large spectrogram and show the result as an image? The axes should be
> suitably configurable and the position and the scale of the little
> spectrogram parts should also be choosable.
>
> I found a way to combine my little spectrogram parts using a
> GraphicsLayoutWidget,
> an ImageItem and translate and scale methods of the ImageItem object.
> This works fine besides the "DeprecationWarning: Deprecated Qt API, will be
> removed in 0.13.0.", which is shown because of the usage of the translate
> and scale methods.
>
> I wonder if there exists already another more simple way inside pqtgraph
> to show individual spectrogram parts as a whole spectrogram?
>
> An example is attached to the e-mail, which shows the principle of my
> ideas. There are shown individual images of sin-functions in y-direction
> and x-direction instead of spectrogram data to make the example easy.
>
> Do you have suggestions?
> feli_x
>
>
>
--
You received this message because you are subscribed to the Google Groups
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/pyqtgraph/df2bf170-4dfa-4899-a603-2d0bd76e2b65n%40googlegroups.com.