Is there a way to build a defined set of colors which the gscatter command to accept?
조회 수: 5 (최근 30일)
Earlier this year I built a MATLAB script which produces group scatter plots for up to 8 data sets. This is a sample of that code;
% Setup the group scatter plot
colors = 'rgbcmykw'; % MATLAB’s default predefined color spec
h = gscatter(T_Time, Rad_Val, Leg_Nom, colors, 'o', 15, 'on');
for n = 1:length(h)
set(h(n), 'MarkerFaceColor', colors(n));
% Change the semilog labels to decimal units
New_YTickLabel = get(gca,'Ytick');
This code works well for the most part. The drawback being an 8th data set plotted in white (where I manually change the color from white to grey).
But now I’ve been asked to modify this code to account for up to 12 data sets. Knowing that there are only 8 pre-defined colors, I suspected MATLAB would throw an error since the number of data sets exceeds the number of available colors. And it did. The exact error reads as follows:
Index exceeds matrix dimensions
It points to this line of code: set(h(n), 'MarkerFaceColor', colors(n));
Since there are only 8 pre-defined, hard coded colors in MATLAB, I’m looking for a method/technique to build a pallet of 12 colors. These 12 colors would be used by the gscatter command and in the for loop.
Can this be done?
Walter Roberson 2014년 3월 31일
Instead of using a color name letter, use an RGB vector.
colors = [1 0 0; 0 1 0; 0 0 1; 0 1 1; 1 1 0; 1 0 1; 0 0 0; 1 1 1 ...] %recheck the values
set(h(n), 'MarkerFaceColor, colors(n,:))