【问题标题】:plotting two figures using matlab plotyy使用matlab plotyy绘制两个数字
【发布时间】:2014-06-02 23:01:49
【问题描述】:

我正在努力绘制我的两个图,一个是简单的 x=y,另一个是使用 plotyy 的箱线图。这是两个:

h1=boxplot(box_panda_8(:, [8 16 24 32 128]) ,'symbol','','notch','on','whisker',0.3)

h2=plot([0 5],[0 5], 'k--')

假设我将 x 轴定义为

x= 0:5

为什么 plotyy 出错(返回的输入不足)

plotyy(x,h1,x,h2)

更新的问题 使用轴通过两个单独的图来解决问题:

%%% two y axes
y2 = 1:6;
x2 = 1:6;

% Plot the first data set
hl1 = boxplot(box_panda_8(:, [8 16 24 32 48 128]) ,'symbol','','notch','on','whisker',0.3)
% Get the axes and configure it
ax1 = gca;
set(ax1,'XColor','r','YColor','r')

%Create the new axes
ax2 = axes('Position',get(ax1,'Position'),...
       'XAxisLocation','top',...
       'YAxisLocation','right',...
       'Color','none',...
       'XColor','k','YColor','k');
% Plot the second data set with the new axes
hl2 =plot(x2,y2,'Color','k','parent',ax2);

但我仍然没有以正确的方式得到我的最终情节。

【问题讨论】:

    标签: matlab plot matlab-figure


    【解决方案1】:

    plotyy() 不用于将绘图合并在一起。看看documentation for plotyy()

    [AX,H1,H2] = plotyy(X1,Y1,X2,Y2,'function1','function2')
    

    使用 function1(X1,Y1) 绘制左轴的数据,使用 function2(X2,Y2) 绘制右轴的数据。因此,您应该能够通过按照以下方式做一些事情来做您正在寻找的事情:

    [AX,H1,H2] = plotyy(boxplot_x,lineplot_x,lineplot_y,@boxplot,@plot);
    

    您可以将set()AX(1)AX(2) 一起使用,分别更改左右轴的轴属性(如标题、标签、刻度线等)。您可以使用set()H1H2 分别为您的箱线图和线图设置线属性。

    很遗憾,我没有统计工具箱,所以我无法测试此语法是否适用于 boxplot()

    还值得注意的是,plotyy() 使用起来很烦人,并且仅限于两个情节。通过在关闭背景的情况下将轴堆叠在同一图中,您可以消除此限制并获得对每个图的所有方面的用户友好控制。有关基本示例,请参阅 this question

    【讨论】:

    • tnx 回复。但我在使用时仍然出错:plotyy(boxplot(box_panda_8(:,[ 8 16 24 32 128])),[0 5],[0 5],'boxplot','plot')
    • 第一个输入参数应该只是箱线图的 x 数据,而不是对箱线图的调用。同样,我不确定这种语法是否有效,您可能需要遵循我链接的其他方法。
    • 在检查了问题答案并应用到我的之后,我仍然没有得到正确的情节,你能在上面看到我更新的问题吗?
    • 在第二个绘图命令之前插入 hold on。 MATLAB 的默认行为会在绘制新图之前清除现有图形并重置坐标区属性。很抱歉回复太晚了。
    猜你喜欢
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2012-03-08
    相关资源
    最近更新 更多