matlab - 如何在 Matlab 绘图中插入两个 X 轴

标签 matlab plot matlab-figure axis-labels

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

我在 Matlab 存储库中找到了 plotyy 和 - plotyyy,但我正在寻找:

  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/s 为单位。

最佳答案

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

Example Plot

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

% 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 - 如何在 Matlab 绘图中插入两个 X 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31009357/

相关文章:

python - 如何删除 Blob 边界上的单个像素?

matlab - 如何使用 `cellfun` (MATLAB) 应用具有多个参数的函数?

matlab - 为什么在 Matlab 中 PCA 和 SVD 的结果不同?

r - 如何在同一个图中绘制 x1、x2、x3 等?

matlab - 以用户在 MATLAB 中测量的指定角度始终如一地生成线

matlab - Simulink MATLAB 中的 s 函数

matlab plot with axis for each plot only on side

java - jmathplot - 旋转轴标签未对齐线图

matlab - 如何使用matlab在3D大数据散点图中用不同颜色标记一个点(我有x,y,z)?

matlab - 使用 "band of uncertainity"显示数据与时间的轨迹