matlab - 具有多个 X 轴的 Matlab 条形图
问题描述
我已经为此苦苦挣扎了一段时间。
我希望能够绘制以下示例,除非使用条形图。
这是我自己实现的。这基本上是两个图相互重叠,每个轴都有不同的轴(当前示例显示相同的刻度值,但我希望它们稍后更改)
我的问题是使用条形图会像这样改变轴位置,我无法解决它。见下图:
这里的轴没有对齐。我需要两个都从同一个地方开始,那是最左边的栏
非常感谢您的帮助,我的代码如下:
close all
figure
y= magic(10)
a=axes('Position',[.1 .2 .8 .7],'XColor','b');
% hold on;
bar( y(1,:),'b','DisplayName','before prop','FaceAlpha',0.1);
xticklabels( {3:12});
legend;
hold on
bar(y(2,:),'r','DisplayName','after prop','FaceAlpha',0.1);
b= axes('Position',[.1 .1 .8 1e-12],'XColor','r')
xticklabels( {4:13});
legend;
编辑:设法解决它 - 请参阅下面的更新代码
close all
figure
y= magic(10)
ax1=axes('Position',[.1 .2 .8 .7],'XColor','b');
bar( y(1,:),'b','DisplayName','before prop','FaceAlpha',0.1);
ax = gca
xticklabels( {3:12});
legend;
hold on
bar(y(2,:),'r','DisplayName','after prop','FaceAlpha',0.1);
axPos = ax1.Position;
ax2 = axes('Position', (axPos .* [1 1 1 1e-3])-[0 .07 0 -1e-3] , 'XColor', 'r', 'linewidth', 2);
set(ax2,'XLim',[-0.2 11.2])
set(ax2,'XTick',(1:10))
xticklabels( {4:13});
解决方案
只需对两个条形图使用相同的 x 限制。MATLAB 函数是“xlim”。
figure
y= magic(10)
a=axes('Position',[.1 .2 .8 .7],'XColor','b'); hold all;
bar( y(1,:),'b','DisplayName','before prop','FaceAlpha',0.1);
xticks(3:1:12); xlim([0 15])
legend;
bar(y(2,:),'r','DisplayName','after prop','FaceAlpha',0.1);
b= axes('Position',[.1 .1 .8 1e-12],'XColor','r'); xlim([3 12]);
xticks(4:1:13); xlim([0 15])
legend;
推荐阅读
- c# - 鼠标单击时如何销毁特定对象?
- laravel - 如何获取保存在laravel数据库表一个单元格中的多个图像
- javascript - 在 React Native Expo WebBrowser 中监听 url 变化
- sql - 从多个源/表中插入
- react-native - 创建 CRNA 的问题
- vba - 已解决 - Sub Application_Quit() 清除已定义变量的值
- javascript - 无法使用 Multer 上传文件
- heroku - 检查 Heroku 本地日志
- android - 无法发送到云 Firestore
- java - 在java中的1到50之间的for循环中生成10个随机数