6

我正在尝试使用 MATLAB/Octave 创建一个简单的热图: 热图
如您所见,我有很多行,每行代表一个单独的类别。

我正在使用该imagesc功能,我希望能够缩放图像/绘图,以便可以正确打印每个 y 轴标签(而不是下图中可以看到的混乱)。

这是我想修改的示例代码:

A = randi(100, 200, 3);
imagesc(A, limit = [0, 100]);
set(gca, 'xtick', [1:3]);
set(gca, 'xticklabel', { "1,000", "2,000", "3,000" });
set(gca, 'ytick', [1:200]);

编辑:我附上了所提出问题的解决方案,感谢 EitanT 的建议以及http://nibot-lab.livejournal.com/73290.html?nojs=1上的有用信息:

paperWidth = 16.5;
paperHeight = 11.7;

set(gcf, 'Position', get(0,'Screensize'));
set(gcf, 'PaperUnits', 'inches');
set(gcf, 'PaperSize', [paperHeight paperWidth]);
set(gcf, 'PaperPositionMode', 'manual');
set(gcf, 'PaperPosition', [0 0 paperWidth paperHeight]);
set(gcf, 'renderer', 'painters'); figure(gcf);

A = randi(100, 200, 3);
imagesc(A, limit = [0, 100]);
set(gca, 'FontSize', 5);
set(gca, 'FontWeight', 'light');
set(gca, 'xtick', [1:3]);
set(gca, 'xticklabel', { "1,000", "2,000", "3,000" });
set(gca, 'ytick', [1:200]);
4

1 回答 1

6

对此有几种可能的解决方案:

调整图形窗口的大小

如果图形尚未最大化,您可以使用:

set(gcf, 'Position', get(0, 'ScreenSize'))

当然,get(0, 'ScreenSize')您也可以使用自定义向量指定任何所需的尺寸(如此所述)。

减小字体大小

您还可以通过减小字体大小来缩小标签文本:

set(gca, 'FontSize', 5)

但是请注意,这会影响当前坐标区中的所有文本。

减少显示的刻度数

作为最后的手段,您可以减少在 y 轴上显示的刻度数,增加刻度间隔。代替1:200,尝试使用其他间隔,例如:

set(gca, 'YTick', [1:20:200])

尝试组合上述解决方案,以获得更好的可视化效果。

您可以在官方文档中阅读有关轴控制的更多信息。此外,正如您在其中一条评论中所建议的那样,此页面包含许多其他有用的技巧,用于在 MATLAB 中显示绘图。

于 2012-11-09T19:11:37.557 回答