matlab - 绘制顶轴(框)线

标签 matlab matlab-figure matlab-hg2

我有一个包含两条线和两个不同 x 轴(不同数据单位)的图,我绘制如下。

我的问题是我也想把盒子的顶线也画成黑色(水平),而不是让它像现在这样“打开”。如果该线也有 x 轴刻度,与底部水平轴线相同,那就太好了。

显然,grid on 不起作用,因为它在右侧绘制 y1 轴刻度,在左侧绘制 y2 轴刻度,这是我不想要的。

此外,我认为在 Matlab 2014 中,这行得通:set(ax(2),'XAxisLocation','top','XTickLabel',[]); 但它不再起作用了在 Matlab 2015a 中。

例子如下:

figure(1);
x = [0, 1, 2, 3];
y_1 = [3, 2, 1.5, 1];
y_2 = [0, 0.5, 0.7, 0.9];
parula_blue = [0, 0.447, 0.741]; parula_red = [0.85, 0.325, 0.098];

[ax, h1, h2] = plotyy(x, y_1, x, y_2);
set(get(ax(1),'Ylabel'),'String','Data 1', 'Color', 'k');
set(h1,'LineWidth',2,'LineStyle','-','Color',parula_blue,'DisplayName', 'Name 1');
set(ax(1),'ycolor',parula_blue);
set(ax(1), 'YTick', [0 1 2 3 4]);
set(ax(1), 'ylim', [0 4]);

set(get(ax(2),'Ylabel'),'String','Data 2', 'Color', 'k');
set(h2,'LineWidth',2,'LineStyle','--','Color',parula_red,'DisplayName','Name 2');
set(ax(2),'ycolor',parula_red);
set(ax(2),'YDir','reverse');
set(ax(2), 'YTick', [0 0.2 0.4 0.6 0.8 1]);

xlabel('X axis desc')
legend('show')
set(ax, 'XTick', x)

set(ax(1),'Box','off') % Turn off box of axis 1, which removes its right-hand ticks
set(ax(2),'Box','off') % Turn off box of axis 2, which removes its left-hand   ticks

enter image description here

最佳答案

基于 this answer ,您可以简单地向绘图添加另一个 axes,并指定其水平轴位于顶部(此代码位于代码末尾):

hBox = axes('xlim', [x(1) x(end)],'XTick', x, 'YTick',[],'XAxisLocation', 'top',...
            'XTickLabel',[]);

编辑:

根据 OP 在评论中的说明,可以通过重新排序图形的子项来在蓝色\橙色“下方”绘制黑色轴,即在我上面的代码之后,还添加:

uistack(hBox,'bottom'); %// This sends the black axes to the back.
ax(1).Color = 'none';   %// This makes the plot area transparent for the top axes, so 
                        %// that ticks belonging to the black axes are visible.

enter image description here


顺便说一句,我记得当我想要具有不同颜色的次要和主要网格线时使用了类似的技巧 - 每组网格线都属于自己的轴,具有自己的颜色

关于matlab - 绘制顶轴(框)线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30372123/

相关文章:

MATLAB 旋转 xtick 标签

MATLAB:提取向量的每第 n 个元素

algorithm - 如何从具有行号和列号的矩阵中提取数据

Matlab 条形图分组但在不同的 y 尺度

matlab - 无法收听 UIAxes 的 YLim 属性

matlab - 在 Matlab R2014b+ (HG2) 上获得可靠的渲染

matlab - 未找到保存图

matlab - 球体的着色部分,一些区域以未分配的颜色结束

matlab - 如何增加 MATLAB 2014b 散点图中图例的标记大小?

matlab - 如何在 MATLAB R2014b 中访问 PropertyEvent 的新值?