MATLAB:绘制线条颜色

时间:2018-07-17 01:15:07

标签: matlab plot

我正在尝试运行以下功能,以便可以绘制通过线连接的一些点,但这些线未以所需的颜色显示(白色)。我也尝试了其他颜色,但是线条仍然无法显示。我不明白为什么。有人可以帮忙吗?

    function draw_constellations

    figure
    hold on
    axis([0,100,0,100])
    grid off
    set(gcf,'color','k')
    set(gca,'color','k')
    axis square
    while 1
        [x,y,button] = ginput(1);
        switch button
            case 1 % left mouse
                p = plot(x,y,'w-*');
            case {'q','Q'} % on keyboard
                break;
        end
    end

2 个答案:

答案 0 :(得分:3)

这是因为您用来绘制的 return -1*(o2.get(3).compareTo(o1.get(3))); x是缩放器。要绘制线条,您需要将从y获得的所有xy存储在向量中并绘制向量:

ginput

但是,如果每次输入新点时都绘制了[x,y,button] = ginput(1); switch button case 1 % left mouse xs = [xs x]; ys = [ys y]; p = plot(xs,ys,'w-*'); % more code to go end xs,则线会重叠。为避免这种情况,我们只绘制第一个点,并为新点更新ysp.XData

p.YData

完整代码:

if isempty(p)
    p = plot(x,y,'w-*');
else
    p.XData = xs;
    p.YData = ys;

结果:

enter image description here

答案 1 :(得分:1)

您可以使用

plot(x,y,'*','color','blue') % plots in blue. 
plot(x,y,'*','color',[.5 .4 .7]) % plots the RGB value [.5 .4 .7]. 

如果需要大量颜色名称,则可以使用rgb函数返回几乎任何颜色的RGB值。例如,

plot(x,y,'*','color',rgb('blood red'))

关于如何更改在不指定颜色的情况下绘制线条时获得的默认颜色顺序的进一步演示:

您是否想知道它是如何先绘制蓝色,然后是深绿色,然后是红色,然后是青色等的?是否曾经想过更改默认顺序,以便它以所需的颜色顺序而不是默认颜色顺序来绘制曲线,而不必在每次调用plot()时都指定颜色?如果是这样,请运行附件的演示。

% Unless you specify the 'Color' property when you plot,
% plots are plotted according to the 'ColorOrder' property of the axes.
% This demo shows how you can change the default color order of plots.

clc;    % Clear the command window.
close all;  % Close all figures (except those of imtool.)
clear;  % Erase all existing variables.
workspace;  % Make sure the workspace panel is showing.
fontSize = 18;

% Make 20 plots, with 25 data points in each plot.
numberOfDataSets = 20;
x = 1:25;
y = rand(numberOfDataSets, length(x));
% These y would all be on top of each other.
% Separate the plots vertically.
offsets = repmat((1:numberOfDataSets)', [1, length(x)]);
y = y + offsets; 

% Get the initial set of default plot colors.
initialColorOrder = get(gca,'ColorOrder') % Initial

% See what the colors look like when plotted:
subplot(2, 1, 1);
plot(x,y, 'LineWidth', 3);
grid on;
caption = sprintf('%d plots with the Initial Default Color Order (Note the repeating colors)', numberOfDataSets);
   title(caption, 'FontSize', fontSize);
xlabel('X', 'FontSize', fontSize);
ylabel('Y', 'FontSize', fontSize);

% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]); % Maximize figure.
% Give a name to the title bar.
set(gcf,'name','Image Analysis Demo','numbertitle','off')

choice = menu('Which ColorOrder do you want?', 'jet', 'random', 'hsv', 'hot', 'cool', 'spring', 'summer',...
'autumn', 'winter', 'lines', 'gray', 'bone', 'copper', 'pink');

% Make a new axes:
subplot(2, 1, 2);

% Create a new colormap that will define the new default color order property.
switch choice
    case 1
        newDefaultColors = jet(numberOfDataSets);
    case 2
        newDefaultColors = rand(numberOfDataSets, 3);
    case 3
        newDefaultColors = hsv(numberOfDataSets);
    case 4
        newDefaultColors = hot(numberOfDataSets);
    case 5
        newDefaultColors = cool(numberOfDataSets);
    case 6
        newDefaultColors = spring(numberOfDataSets);
    case 7
        newDefaultColors = summer(numberOfDataSets);
    case 8
        newDefaultColors = autumn(numberOfDataSets);
    case 9
        newDefaultColors = winter(numberOfDataSets);
    case 10
        newDefaultColors = lines(numberOfDataSets);
    case 11
        newDefaultColors = gray(numberOfDataSets);
    case 12
        newDefaultColors = bone(numberOfDataSets);
    case 13
        newDefaultColors = copper(numberOfDataSets);
    otherwise
        newDefaultColors = pink(numberOfDataSets);
end
% Note: You can build your own custom order if you want, 
% just make up a array with numberOfDataSets rows and 3 columns
% where each element is in the range 0-1.

% Apply the new default colors to the current axes.
set(gca, 'ColorOrder', newDefaultColors, 'NextPlot', 'replacechildren');

% Now get the new set of default plot colors.
% Verify it changed by printing out the new default color set to the commandwindow.
newColorOrder = get(gca,'ColorOrder')

% Now plot the datasets with the changed default colors.
plot(x,y, 'LineWidth', 3);
grid on;
caption = sprintf('%d plots with the New Default Color Order', numberOfDataSets);
title(caption, 'FontSize', fontSize);
xlabel('X', 'FontSize', fontSize);
ylabel('Y', 'FontSize', fontSize);

msgbox('Done with ColorOrder demo!');    

特别感谢/感谢,敬请光临https://ch.mathworks.com/matlabcentral/answers/uploaded_files/16843/ColorOrder_demo.m