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