Effacer les filtres
Effacer les filtres

How can i fill a marker with color?

1 783 vues (au cours des 30 derniers jours)
Philipp Mueller
Philipp Mueller le 26 Sep 2016
Hi,
I have two plots. How can I fill the marker in plot2? At the moment it is empty. With: plot(x(i),y(i),'s','MarkerFaceColor',colors(ID(i),:));???
Input_Matrix = textread('Rainflow_Input1.txt')
[zeilen,spalten]=size(Input_Matrix)
x = Input_Matrix(:,1)
y = Input_Matrix(:,2)
z = Input_Matrix(:,3)
colorbar('location','Manual', 'position', [0.93 0.1 0.02 0.81]);
a=30
scatter(x,y,a,z,'filled')
colorbar;
%http://stackoverflow.com/questions/15814068/pcolor-in-scatter-plot-matlab
[dummy ID]=sort(z);
colors=colormap(jet(length(z)));
figure
for i=1:length(z)
plot(x(i),y(i),'s','Color',colors(ID(i),:));
hold on
end
  1 commentaire
Philipp Mueller
Philipp Mueller le 26 Sep 2016
with -> plot(x(i),y(i),'s','MarkerFaceColor',colors(ID(i),:)); ???

Connectez-vous pour commenter.

Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 5 Juin 2024
If you are only plotting markers, and not any lines, you can create a plot with filled markers by calling the "scatter" function with the "filled" option. 
x = rand(1,50);
y = rand(1,50);
colors = jet(numel(x));
scatter(x,y,[],colors,'filled','s')
If you need to use the "plot" function, you can set the "MarkerFaceColor" property. If you want the edges of the markers to match, set the "MarkerEdgeColor" property to the same color values. 
figure
hold on
for i=1:50
plot(x(i),y(i),'s','MarkerFaceColor',colors(i,:),'MarkerEdgeColor',colors(i,:));
end
hold off
Also, you don’t need to call "hold on" at each iteration of the loop. You can call it once just before plotting. Call "hold off" when you’re all done. 
You can find more examples of setting marker colors in the documentation:
Specify Marker Colors in a Scatter Plot
https://www.mathworks.com/help/matlab/creating_plots/specify-plot-colors.html#mw_9ff0ca4d-33b0-4b96-b5b5-0f68092b0211

Plus de réponses (3)

Walter Roberson
Walter Roberson le 26 Sep 2016
Yes, you can use MarkerFaceColor to fill markers.
Note that only one 'MarkerFaceColor' will be paid attention to for any plot() call, even if you are requesting to plot multiple items.
As you are not drawing lines, you should consider instead using scatter(). You can specify the color of each point for scatter, and use the 'filled' option.

Forrest Mobley
Forrest Mobley le 19 Août 2018
It's also doable to just choose whatever predefined color as when choosing what your marker color is.
For example: plot(x,y,'or','MarkerFaceColor','r');
This will give your marker face and marker outline the same color, red.
  2 commentaires
KAE
KAE le 24 Jan 2019
If you aren't picking the color yourself, but it's getting set by the plot color order, you can still fill it with the same color as the marker edges or line plot as follows,
x = rand(1,5); y = rand(1,5); % Example data
h1 = plot(x, y, '-o'); % Plot a line and circle markers
set(h1, 'markerfacecolor', get(h1, 'color')); % Use same color to fill in markers
Luis Humberto Niño Alvarez
Thanks KAE!!!, very useful

Connectez-vous pour commenter.


MathWorks Support Team
MathWorks Support Team le 17 Mar 2021
If you are only plotting markers, and not any lines, you can create a plot with filled markers by calling the scatter function with the 'filled' option.
scatter(x,y,[],colors,'filled','s')
If you need to use the plot function, you can set the MarkerFaceColor property. If you want the edges of the markers to match, set the MarkerEdgeColor property to the same color values.
figure
hold on
for i=1:length(z)
plot(x(i),y(i),'s','MarkerFaceColor',colors(ID(i),:), ...
'MarkerEdgeColor',colors(ID(i),:));
end
hold off
If you want the markers to have the same color as the axes background color, set the MarkerFaceColor property to 'auto' to fill the markers with that color.
Also, you don’t need to call hold on at each iteration of the loop. You can call it once just before plotting. Call hold off when you’re all done.

Catégories

En savoir plus sur Scatter Plots dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by