如何在Matlab图形中插入两个X轴 [英] How to insert two X axis in a Matlab a plot

查看:963
本文介绍了如何在Matlab图形中插入两个X轴的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用相同的绘图创建一个具有双X轴(m/s和km/h)的Matlab图形.

I would like create a Matlab figure with a double X axis (m/s and km/h) with the same plot.

我找到了plotyyy,并且-在Matlab存储库中找到了-plotyyy,但是我正在寻找:

I have found plotyy and - in Matlab reposity - plotyyy, but I am looking for:

  1. 双X轴.
  2. 位于情节下方.

我的代码很简单:

stem(M(:, 1) .* 3.6, M(:, 3));

grid on

xlabel('Speed (km/h)');
ylabel('Samples');

M(:, 1)是速度(以m/s为单位),M(:, 3)是数据.

M(:, 1) is the speed (in m/s), and M(:, 3) is the data.

我只想在底部第二行,速度以m/s为单位.

I would like only a second line, in the bottom, with the speeds in m/s.

推荐答案

您可以执行以下操作.与 @ Benoit_11 的解决方案相比,我确实使用普通的Matlab标签,并使用手柄引用两个轴,因此分配是明确的.

You can do something like the following. In comparison to the solution of @Benoit_11 I do use the normal Matlab labels and refer to both axes with handles so the assignments are explicit.

以下代码创建一个空的x轴b,高度为可忽略不计,单位为 m/s .此后,在第二个轴a上绘制实际曲线,第二个轴a位于其他轴的上方,单位为 km/h .要在特定轴上绘图,请插入轴手柄作为stem的第一个参数.从 m/s km/h 的转换直接写入对stem的调用中.最后,需要将两个轴的xlim属性设置为相同的值.

The following code creates an empty x-axis b with the units m/s with a negligible height. After this, the actual plot is drawn in a second axes a located a bit above the other axes and with units km/h. To plot on a specific axes, insert the axes-handle as the first argument of stem. The conversion from m/s to km/h is directly written in the call to stem. Finally, it's needed to set the xlim-property of the both axes to the same values.

% experimental data
M(:,1) = [ 0,  1,  2,  3,  4,  5];
M(:,3) = [12, 10, 15, 12, 11, 13];

% get bounds
xmaxa = max(M(:,1))*3.6;    % km/h
xmaxb = max(M(:,1));        % m/s


figure;

% axis for m/s
b=axes('Position',[.1 .1 .8 1e-12]);
set(b,'Units','normalized');
set(b,'Color','none');

% axis for km/h with stem-plot
a=axes('Position',[.1 .2 .8 .7]);
set(a,'Units','normalized');
stem(a,M(:,1).*3.6, M(:,3));

% set limits and labels
set(a,'xlim',[0 xmaxa]);
set(b,'xlim',[0 xmaxb]);
xlabel(a,'Speed (km/h)')
xlabel(b,'Speed (m/s)')
ylabel(a,'Samples');
title(a,'Double x-axis plot');

这篇关于如何在Matlab图形中插入两个X轴的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆