在MATLAB中,是否可以创建一个包含两个相关数据源的单个图,其中第一个源绘制在x轴的底部,第二个绘制源从顶部绘制的X轴?Matlab,在一张图中绘制两个数据序列
我在MATLAB文档中找不到任何地方。
最后图形我需要的是这样一种形式:
在MATLAB中,是否可以创建一个包含两个相关数据源的单个图,其中第一个源绘制在x轴的底部,第二个绘制源从顶部绘制的X轴?Matlab,在一张图中绘制两个数据序列
我在MATLAB文档中找不到任何地方。
最后图形我需要的是这样一种形式:
我试图复制你的图形尽可能接近。这是我结束了:
t = linspace(datenum('01-19-2002'), datenum('06-27-2002'), 12);
x1 = randi(40, [12 1]);
x2 = randi(40, [12 1]);
z = 100-x1-x2;
hAxR = axes();
hAxL = axes();
h = bar(t, [x1 z x2], 'stacked');
set(h(1),'facecolor','y')
set(h(2),'facecolor',[.8 .8 .8])
set(h(3),'facecolor','r')
legend(h, {'s1' 's2' 's3'}, ...
'orientation','horizontal', 'location','northoutside')
set(hAxL, 'xtick',t, 'xlim',[datenum('01-01-2002') datenum('07-15-2002')])
datetick(hAxL, 'x',2,'keepticks','keeplimits')
xticklabel_rotate
ylabel(hAxL, 'label1')
ylabel(hAxR, 'label2')
set(hAxR, 'position',get(hAxL,'position'), 'color','none', 'xtick',[], ...
'ydir','reverse', 'yaxislocation','right', 'ylim',get(hAxL,'ylim'))
set(hAxL, 'YGrid','on')
我使用XTICKLABEL_ROTATE旋转在x轴
Gah!打败我5分钟!请注意,通过http://www.mathworks.com/matlabcentral/fileexchange/18826-hatch-fill-patterns-plus-plus,您可以对条形进行交叉阴影填充。另外,你可能想用真实的东西来替换'label1'和'label2'。 +1为完美的解决方案。 – Jonas 2010-07-14 02:43:01
@Jonas:谢谢,我只是在FEX上查找了关于孵化模式的提交,颜色为 – Amro 2010-07-14 02:47:23
我刚刚注意到你只绘制了一个酒吧系列。鉴于问题的标题,我认为OP希望有一种带有两种颜色的堆叠酒吧系列,以及一款带有剖面线图案的酒吧系列。因此,你需要运行'hBL = bar(hAxL,data1); hBR = bar(hAxR,data2)'。 – Jonas 2010-07-14 03:00:17