How to plot a swarm chart with no specific x-values?
28 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Wolfgang McCormack
el 12 de Mzo. de 2021
Respondida: Russel Burgess
el 15 de Mzo. de 2021
Hi everyone,
I have a huge dataset, around 1 million values in a column. The range of these values are limited. They, for example, fluctuate between -100 to +100 (I need to find these two values by min and max). The fluctuation is also very erratic (there might be some patterns though).
So, I was having an idea to use swarm chart and plot the distribution of this dataset on something like a swarm chart. Do you think it would be possible using swarm chart or any other chart type on MATLAB? (I know we can use histogram but something like what I described would be easier to understand for my audience)
I mean something like this:
5 comentarios
Respuesta aceptada
Russel Burgess
el 15 de Mzo. de 2021
Following on from the comments:
y = randn(1e3,1);
swarmchart(zeros(size(y)), y);
Will produce the desired chart, in R2020b.
For drawing a line on the chart at the widest point - unfortunately (as far as I know) swarmchart doesn't return or expose the plotted coordinates... publicly. That means you'll have to break into the structure and ignore some warnings.
figure(1);
clf;
hold('on');
y = randn(1e3,1);
s = swarmchart(zeros(size(y)), y);
raw_s = struct(s);
raw_data = raw_s.XYZJittered;
[xmax,maxidx] = max(abs(raw_data(:,1)));
ymax = raw_data(maxidx,2);
plot([-xmax xmax], [ymax ymax], 'r-', 'LineWidth', 3);
This may not be exactly what you want but it should be enough to get started: those last 5 lines of code expose the private scatter object fields, including the "XYZJittered" field which appears to contain the actual plotted data in 3 columns. I then just find the coordinates of the point with x value farthest from 0, and plot the line there. This yields something like:
This is a little crude - but once you've got the raw plotted data you could process it in other ways. Another option would be to calculate the kernel density directly to find the maximums (if you have the stats toolbox, or here but I haven't tried it).
0 comentarios
Ver también
Categorías
Más información sobre Data Distribution Plots 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!