Borrar filtros
Borrar filtros

combine bar chart with a line plot

7 visualizaciones (últimos 30 días)
Ludovica Varriale
Ludovica Varriale el 20 de Oct. de 2023
Comentada: Dyuman Joshi el 20 de Oct. de 2023
Hello everybody,
I have a problem to plot a bar chart with a line plot. Basically, it does not plot the line (although it is not necessary, I just need the marker).
Which is the problem? Here my function:
x=["24h","48h","72h"];
y= [0.59 0.78; 0.61 0.84; 0.74 0.98];
yyaxis left
bar(x,y)
ylim([0 1])
ylabel('Y_{EtOH} [g/g]');
legend 'no adapted' 'adapted';
C= orderedcolors("reef");
colororder(C(2:3,:));
hold on
yyaxis right
names={'24h';'48h','72h'};
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
x=["24h","48h","72h"];
y2= [0.74 0.74; 0.44 0.57; 0.37 0.44];
plot(x,y2,'LineStyle',"none");
set(gca,'xtick',1:3,'xticklabel',names);

Respuesta aceptada

Dyuman Joshi
Dyuman Joshi el 20 de Oct. de 2023
plot expects the inputs as numerical values.
You can plot the values directly, for which the x-values will be the corresponding indices.
y= [0.59 0.78; 0.61 0.84; 0.74 0.98];
bar(y)
ylim([0 1])
ylabel('Y_{EtOH} [g/g]');
legend 'no adapted' 'adapted';
C = orderedcolors("reef");
colororder(C(2:3,:));
%corrected v
names={'24h';'48h';'72h'};
hold on
y2= [0.74 0.74; 0.44 0.57; 0.37 0.44];
plot(y2, '*', 'HandleVisibility', 'off');
set(gca,'xtick',1:3,'xticklabel',names);
  4 comentarios
Ludovica Varriale
Ludovica Varriale el 20 de Oct. de 2023
Dear Dyuman, this was exactly what I was searching for!!
Thank you for helping !
Dyuman Joshi
Dyuman Joshi el 20 de Oct. de 2023
You are welcome!

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 20 de Oct. de 2023
x=["24h","48h","72h"];
y= [0.59 0.78; 0.61 0.84; 0.74 0.98];
yyaxis left
bh = bar(x,y);
ylim([0 1])
ylabel('Y_{EtOH} [g/g]');
C = orderedcolors("reef");
colororder(C(2:3,:));
hold on
yyaxis right
names={'24h';'48h';'72h'};
x=["24h","48h","72h"];
Cx = categorical(x);
y2= [0.74 0.74; 0.44 0.57; 0.37 0.44];
plot(Cx, y2, '*');
set(gca,'xtick',Cx,'xticklabel',names);
legend(bh, {'no adapted' 'adapted'}, 'location', 'north');
  2 comentarios
Ludovica Varriale
Ludovica Varriale el 20 de Oct. de 2023
thank you!
Is there a way to have the marker on the corresponding bar? they are between the bars
Walter Roberson
Walter Roberson el 20 de Oct. de 2023
Not when you are using categorical x for the bar() call: when you do that then plot() coordinates can only be category names without any offset.
You would need to switch to using numeric x for the bar() call, knowing that your settting xticks is going to give the appropriate label. After that it would be a matter of figuring out where the bar positions are; that could either be estimated or could be done by examining the graphics objects created by the bar() call.

Iniciar sesión para comentar.

Categorías

Más información sobre Bar Plots en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by