How to use Plot Browser's toggle ability when using multiple tiles
13 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Charles Lewis
el 21 de En. de 2020
Comentada: Charles Lewis
el 23 de En. de 2020
I have 3 sets of data: temperature, humidity, and pressure plotted against time for around 40 products.
I would like to be able to view the data on separate plots, but also toggle each item's plots on and off, preferably all 3 sets simultaneously, so I can compare the products' exposures.
Currently, I have the 3 plots tiled vertically, and am using linkaxes so I can zoom in on a time period in the temperature set, for instance, and see the changes in humidity and pressure at the same time (see code below).
However, I can't seem to get the toggle buttons to appear for the 40 products when using plotbrowser. I've tried giving each set a separate legend, as well as trying to implement a shared legend, but to no avail. Is what I want to do possible? I'm sure it's possible through using toggle buttons and a GUI, but that's something I've not taught myself yet, and I imagine will require the creation of 40 functions...
Any help anyone can provide would be greatly appreciated.
All the best
tiledlayout(3,1);
for y = 1:numel(serial_list)
nexttile(1)
plot(x, y_temp(:,y));
hold on
nexttile(2)
plot(x, y_humidity(:,y));
hold on
nexttile(3)
plot(x, y_pressure(:,y));
hold on
end
ax1 = nexttile(1)
ax2 = nexttile(2)
ax3 = nexttile(3)
linkaxes ([ax1, ax2, ax3], 'x');
plotbrowser
0 comentarios
Respuesta aceptada
Adam Danz
el 21 de En. de 2020
Editada: Adam Danz
el 22 de En. de 2020
TL;DR: The plotbrowser apparently doesn't work with TiledChartLayout axes. Instead, use subplot() to create your axes.
plotbrowser (introduced before 2006) apparently doesn't work with TiledChartLayout objects (introduced in r2019b). Fortunately plotbrowser works with axes created by the subplot function (introduced before 2006).
for y = 1:numel(serial_list)
ax1 = subplot(3,1,1);
plot(x, y_temp(:,y));
hold on
ax2 = subplot(3,1,2);
plot(x, y_humidity(:,y));
hold on
ax3 = subplot(3,1,3);
plot(x, y_pressure(:,y));
hold on
end
linkaxes ([ax1, ax2, ax3], 'x');
plotbrowser
5 comentarios
Adam Danz
el 23 de En. de 2020
Editada: Adam Danz
el 23 de En. de 2020
I understand what you mean but i don't see much flexibility in the function's documentation. I don't think that's do-able.
I have an idea for a workaround, though. When you toggle the plot object on/off using the plotbrowser, you're merely changing its visible property to off/on. You could add a listener that responds when the visibile property is changed in any of the plot objects. The options to toggle on/off the objects within each subplot will still be shown but if the listener is set up correctly, if you turn one object off its corresponding objects in the other axes will also go off (or back on).
That will require a bit of coding, especially if you haven't set up a listener before.
Más respuestas (0)
Ver también
Categorías
Más información sobre Specifying Target for Graphics Output en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!