![]() |
如何使图像足够大以避免刻度标签重叠?
假设数据X的大小为1000 * 1000。使用以下命令显示X:
imagesc(X); 并使用以下标签标记所有行: set(gca, 'YTickLabel', somelabels); 尽管已正确绘制了数据X并显示了Ytick标签,但由于行数很多,因此标签高度重叠。有什么办法解决这个问题?任何帮助将不胜感激。 [B]编辑1[/B] 我意识到我的问题并不能很好地代表我的问题。我将根据答案总结我的理解并重新提出一个问题: [LIST=1][*]要在“ [I]图形窗口”中[/I]显示尽可能多的行/标签,以下帮助: set(gca,'FontSize',6), or, alternate the distance (suggested by yuk), or, set(gca,'YTick',1:10:1000,'YTickLabel',somelabels(1:10:1000));[*]代码 set(gca,'Units','pixels','Position',[20 20 10000 10000]); 默认情况下将显示放大的图像。但是,如果放大的图像太大而无法容纳在“ [I]图形窗口”中[/I] ,则将仅显示图像的一部分。但是, [I]缩小[/I]或[I]平移[/I]工具都无法到达该图像的其余部分。 [*]代码的默认行为 imagesc(X); set(gca, 'ytick', 1:1000, 'yticklabe', ylabel); 用重叠的标签将整个图像拟合显示在“ [I]图形窗口”中[/I] 。不过,它确实允许人们[I]放大[/I]图像的一部分并查看未重叠的标签。 [*]如果我将图像保存到pdf文件中: imagesc(X); set(gca, 'ytick', 1:1000, 'yticklabe', ylabel); saveas(gcf, 'fig.pdf'); 然后,保存的pdf仅是带有重叠标签的适合“ [I]图形窗口”[/I]的图像。然而, [I]在[/I] Matlab图窗口中不同[I][I]变焦[/I][/I] , [I]在[/I] pdf阅读器内不会改变标签的相对位置/距离。结果,以pdf格式放大的图像仍会与标签重叠。 [/LIST]所以我的问题是: 如何将图像保存到pdf文件或png中,以使其在Adobe Reader中打开时具有与上述[I]第3点[/I]类似的行为,而不是与[I]第4[/I] [I]点[/I]类似的行为? [B]回答:[/B] 您也可以使用轴标签字体来使其变小。 set(gca,'FontSize',6) 另请参见其他[URL="http://www.mathworks.com/help/techdoc/ref/axes_props.html"]轴属性[/URL]以更改字体-FontName,FontWidth,FontUnits等。 [B]另一个解决方案[/B] :如果标签较短,则可以在距离轴的地方进行替换,因此标签不会重叠。检查以下示例: lbl = cellstr(reshape(sprintf('%3d',1:100),3,100)'); lbl(1:2:100) = strcat(lbl(1:2:100),{' '}); imagesc(rand(100)) set(gca,'ytick',1:100) set(gca,'yticklabel',lbl) 结果图像的一部分: [IMG]https://i.stack.imgur.com/vjvjZ.png[/IMG] [B]更新[/B] 回答您的更新问题。 [LIST=1][*] PDF文档只能包含静态图像。将图形保存为PDF(或任何其他图形文件)后,就无法像使用MATLAB图形工具一样进行放大/缩小。[*]您可以先放大MATLAB图形,然后再保存PDF文件。在这种情况下,图形将按原样保存。但是这种方式假定用户与图形具有交互性。[*]如果您事先知道您感兴趣的区域,则可以使用XLim / YLim属性设置轴限制,然后保存该图。[/LIST]例: imagesc(X); set(gca, 'ytick', 1:1000, 'yticklabe', ylabel); set(gca, 'XLim',[1 20], 'YLim', [20 40]) saveas(gcf, 'fig.pdf'); 顺便说一句,您还可以使用[URL="http://www.mathworks.com/help/techdoc/ref/print.html"]PRINT[/URL]功能将图形保存到文件中。更灵活。 SAVEAS只是包装。 print('-dpdf','fig.pdf') [url=https://stackoverflow.com/questions/3673491]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:45。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.