choose coulor of plot

1 view (last 30 days)
Max Müller
Max Müller on 30 Jul 2014
Edited: Max Müller on 11 Aug 2014
Hey Guys, I want to give the User of my PlotingProgram the option to choose the color of the plot lines. I would be really happy about some ideas or tips.
My current Thought is:
-Creating a pie plot
-using different coulors for each segment of the plot
-the user click in one segment of the plot
-regarding to the Coordinates of the click the program selects the coulor
  2 Comments
Patrik Ek
Patrik Ek on 30 Jul 2014
Edited: Patrik Ek on 30 Jul 2014
What have you attempted? This is a quite long request. You will need to create a gui for this. Check out guide and/or callback functions.
This is something I put together fast some time ago:
function myCallback(hObject,eventdata)
c = 'krym';
n = randi([1,4],1);
ch = get(gca,'Children');
set(ch,'Color',c(n));
Apply this callback some standard plot like plot(1:10,'LineW',2,'ButtonDownFcn',@myCallback);. The function randomly selects a color from c. This could work as inspiration.
Geoff Hayes
Geoff Hayes on 30 Jul 2014
See also uisetcolor which, when run, will launch a dialog for selecting colours.

Sign in to comment.

Accepted Answer

Max Müller
Max Müller on 7 Aug 2014
i got it....and somehow i can accept my own answer
  2 Comments
Geoff Hayes
Geoff Hayes on 7 Aug 2014
Max - could you perhaps include a description of the solution/answer so that others (when viewing your posted question) can get an idea of how you went about solving this problem?
Max Müller
Max Müller on 11 Aug 2014
Edited: Max Müller on 11 Aug 2014
The Code is too long....i did this for 26 Colors. I have created a Button that changes its BackGroundColor on click. So u chose ur Color. But 1st i created an Array holding 26 Colors via RGB-system.
% Coulors you can chose(3 as example/all rgb-system (red/green/blue))
RedAmount = [0,0,1]
GreenAmount = [0,1,1]
BlueAmount = [1,1,0]
ArrayOfCoulors = [RedAmount;GreenAmount;BlueAmount];
ArrayOfCoulors = ArrayOfCoulors';
setappdata(handles.CompareMultipleShots,'ArrayOfCoulors',ArrayOfCoulors);
%%ChoseCoulor
function CoulorOneButton_Callback(hObject, eventdata, handles)
ArrayOfCoulors = getappdata(handles.CompareMultipleShots,'ArrayOfCoulors');
Counter = getappdata(hObject,'Counter');
if isempty(Counter)|Counter == 26;
Counter = 0;
setappdata(hObject,'Counter',Counter);
end
Counter = Counter + 1;
Coulor = ArrayOfCoulors(Counter,:);
set(hObject,'BackgroundColor',[Coulor]);
setappdata(hObject,'Counter',Counter);
setappdata(handles.CompareMultipleShots,'LineCoulorUsedAmp',Coulor)
Color goes to my Plotfunction....
plot(x,y,'Color',[Color]) %as example

Sign in to comment.

More Answers (2)

Salaheddin Hosseinzadeh
Salaheddin Hosseinzadeh on 30 Jul 2014
Hi Max,
Sorry I'm a bit lazy to actually write a code, but I'm sure you can do it, and you can do it the you want it.
I read your question and they way I would do this is to use
[x,y] = ginput(n)
to let the user click on n segments, or you may do it one by one, then I would normalize the x and y values in respect to their max and min allowed values, so x and y end up being between 0 and 1, and I would use normalized x and y for a new color, [x y 1]
So you would never end up having the same color.

Max Müller
Max Müller on 31 Jul 2014
This questions is all about ideas.....I dont want codes or u guys to work for me. I just want some hints and ideas. I am tankful for all ur help but just collect ideas.

Community Treasure Hunt

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

Start Hunting!