matlab的plot命令作图后另存为jpg文件时y轴标注显示不完整
示例源程序如下:a=[-10:0.1:10];plot(a,sqrt(abs(a/2)))gridonxlabel('杨氏模量A(ex)')ylabel('杨氏模量B(y...
示例源程序如下:
a=[-10:0.1:10];plot(a,sqrt(abs(a/2)))grid onxlabel('杨氏模量A(ex)')ylabel('杨氏模量B(y)')set(gca,'yticklabel',sprintf('%03.0f|',get(gca,'ytick')));
然后另存为jpg,所得图片如下,可以看出y轴标注“杨氏”顶端部分显示不完整,请高手给个解决方法。 展开
a=[-10:0.1:10];plot(a,sqrt(abs(a/2)))grid onxlabel('杨氏模量A(ex)')ylabel('杨氏模量B(y)')set(gca,'yticklabel',sprintf('%03.0f|',get(gca,'ytick')));
然后另存为jpg,所得图片如下,可以看出y轴标注“杨氏”顶端部分显示不完整,请高手给个解决方法。 展开
3个回答
展开全部
可以用print函数。
matlab对图形图片进行保存的方法:
如今常用的方法有三种printf,imwrite,saveas下面分别介绍一下:
一、imwrite
mwrite将图像数据写成图像文件,一般用于图像处理,当我们使用imshow将一副图像使显示在坐标系上时,我们可以使用如下方式保存图像
I=getimage(gcf); % 获取坐标系中的图像文件数据
imwrite(I,'myphoto.jpg')%保存图像为文件
同时可以使用下面的形式保存图片数据,把图片保存到指定文件夹,并对文件名进行编号
f=getframe(gcf);
imwrite(f.cdata,['C:\Users\shitao\Desktop\s4\',int2str(i),'.jpg']);
这个函数在视频分帧时,我经常使用,相对saveas的保存速度,个人感觉效率比较高,下面举个例子
clc;close all;clear all;
Img=imread('1.jpg');
if ndims(Img)==3
I=rgb2gray(Img);
else
I=Img;
end
I=im2bw(I,graythresh(I));
[m,n]=size(I);
imshow(I);title('binary image');
txt=get(gca,'Title');
set(txt,'fontsize',16);
L=bwlabel(I);
stats=regionprops(L,'all');
set(gcf,'color','w');
set(gca,'units','pixels','Visible','off');
q=get(gca,'position');
q(1)=0;%设置左边距离值为零
q(2)=0;%设置右边距离值为零
set(gca,'position',q);
for i=1:length(stats)
hold on;
rectangle('position',stats(i).BoundingBox,'edgecolor','y','linewidth',2);
temp = stats(i).Centroid;
plot(temp(1),temp(2),'r.');
drawnow;
end
frame=getframe(gcf,[0,0,n,m]);
im=frame2im(frame);
imwrite(im,'a.jpg','jpg');%可以修改保存的格式
二、saveas
Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】
% saveas(figure_handle,filename,fileformat)
plot(1:10);
saveas(gcf,‘myfig.jpg’)
它有三种书写方式
saveas(gcf,['D:\保存的数据文件\方法1.png'])
saveas(gcf,['D:\保存的数据文件\方法2','.png'])
saveas(gcf,['D:\保存的数据文件\','方法3','.png'])
用saveas命令保存图片。
Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】。
saveas的三个参数:
(1)图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3。
(2)文件名。
(3)单引号字符串,指定存储格式。
例:
% saveas(figure_handle,filename,fileformat) plot(1:10);
>>saveas(gcf,['D:\保存的数据文件\方法1.png'])
>> saveas(gcf,['D:\保存的数据文件\方法2','.png'])
>> saveas(gcf,['D:\保存的数据文件\','方法3','.png'])把图片保存到指定目录并编号
saveas(gcf,['C:\Users\shitao\Desktop\s3\',int2str(i),'.jpg']);
mov=aviread('C:\Users\shitao\Desktop\s5\2.avi');%读入视频
Vframes=size(mov,2);%读取视频的帧数
figure
for i=1:Vframes
% strtemp=strcat('C:\Users\shitao\Desktop\s2\',int2str(i),'.','jpg');%将每帧转成.jpg的图片
I=mov(i).cdata;
imshow(I);
%此处添加图像处理内容,如对图像画框,画线等操作
saveas(gcf,['C:\Users\shitao\Desktop\s2\',int2str(i),'.jpg']);
%imwrite(mov(i).cdata(:,:,:),strtemp); %把图像写入磁盘
end
saveas与imwrite的区别
saveas(handle,['目录','文件名'])
如果只有一幅图,handle设为gcf
如果有多副,handle需单独设置
imwrite(image_data,['directory','filename'])
需要与getframe连用
两个命令都可以用来保存图像,区别在于
1、背景色:saveas保存的图像 背景色自动设置为白色,imwrite保存图像为所见即所得
2、图像大小: saveas无视你设置的图像大小,按默认保存,imwrite保存所见即所得
contrast example:在当前目录下image文件夹下找到两个图像,对比一下
clear
clc
x=0:pi/100:2*pi;
y=sin(x);
h=plot(x,y); % h为plot线的句柄handle
set(gcf,'position',[80,100,400,600])
% 将图像设置为距屏幕左下角 [80,像素
% 图像大小设置为400*600像素
set(gcf,'color',[1,1,1]) % 背景色设置为白色
mkdir image
% 在当前文件夹下新建image文件夹,如果已存在会warning,不影响运行
% ========================
saveas(gcf,['image','test1.jpg'])
% ========================
f=getframe(gcf);
imwrite(f.cdata,['image','test2.jpg'])
三、printf
用法:print(图形句柄,存储格式,文件名);
图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3.用gcf可以获取当前窗口句柄。
指定存储格式。常用的有:
png格式:‚-dpng‘ (推荐这一种,与bmp格式一样清晰,文件也不大)
jpeg: ‚-djpeg‘(文件小,较清晰)
tiff: ‚-dtiff‘
bmp: ‚-dbitmap‘(清晰,文件极大)
gif: ‚-dgif‘(文件小但不清晰)
例如
<font color="#000000" size="2">% print(figure_handle,fileformat,filename)
x=-pi:2*pi/300:pi;
y=sin(x);
plot(x,y);
%Matlab根据文件扩展名,自动保存为相应格式图片,另外路径可以是绝对也可以是相对
print(gcf,'-dpng','abc.png') %保存为png格式的图片到当前路径</font>
注意:print函数必须紧跟在plot函数之后使用。
matlab对图形图片进行保存的方法:
如今常用的方法有三种printf,imwrite,saveas下面分别介绍一下:
一、imwrite
mwrite将图像数据写成图像文件,一般用于图像处理,当我们使用imshow将一副图像使显示在坐标系上时,我们可以使用如下方式保存图像
I=getimage(gcf); % 获取坐标系中的图像文件数据
imwrite(I,'myphoto.jpg')%保存图像为文件
同时可以使用下面的形式保存图片数据,把图片保存到指定文件夹,并对文件名进行编号
f=getframe(gcf);
imwrite(f.cdata,['C:\Users\shitao\Desktop\s4\',int2str(i),'.jpg']);
这个函数在视频分帧时,我经常使用,相对saveas的保存速度,个人感觉效率比较高,下面举个例子
clc;close all;clear all;
Img=imread('1.jpg');
if ndims(Img)==3
I=rgb2gray(Img);
else
I=Img;
end
I=im2bw(I,graythresh(I));
[m,n]=size(I);
imshow(I);title('binary image');
txt=get(gca,'Title');
set(txt,'fontsize',16);
L=bwlabel(I);
stats=regionprops(L,'all');
set(gcf,'color','w');
set(gca,'units','pixels','Visible','off');
q=get(gca,'position');
q(1)=0;%设置左边距离值为零
q(2)=0;%设置右边距离值为零
set(gca,'position',q);
for i=1:length(stats)
hold on;
rectangle('position',stats(i).BoundingBox,'edgecolor','y','linewidth',2);
temp = stats(i).Centroid;
plot(temp(1),temp(2),'r.');
drawnow;
end
frame=getframe(gcf,[0,0,n,m]);
im=frame2im(frame);
imwrite(im,'a.jpg','jpg');%可以修改保存的格式
二、saveas
Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】
% saveas(figure_handle,filename,fileformat)
plot(1:10);
saveas(gcf,‘myfig.jpg’)
它有三种书写方式
saveas(gcf,['D:\保存的数据文件\方法1.png'])
saveas(gcf,['D:\保存的数据文件\方法2','.png'])
saveas(gcf,['D:\保存的数据文件\','方法3','.png'])
用saveas命令保存图片。
Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】。
saveas的三个参数:
(1)图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3。
(2)文件名。
(3)单引号字符串,指定存储格式。
例:
% saveas(figure_handle,filename,fileformat) plot(1:10);
>>saveas(gcf,['D:\保存的数据文件\方法1.png'])
>> saveas(gcf,['D:\保存的数据文件\方法2','.png'])
>> saveas(gcf,['D:\保存的数据文件\','方法3','.png'])把图片保存到指定目录并编号
saveas(gcf,['C:\Users\shitao\Desktop\s3\',int2str(i),'.jpg']);
mov=aviread('C:\Users\shitao\Desktop\s5\2.avi');%读入视频
Vframes=size(mov,2);%读取视频的帧数
figure
for i=1:Vframes
% strtemp=strcat('C:\Users\shitao\Desktop\s2\',int2str(i),'.','jpg');%将每帧转成.jpg的图片
I=mov(i).cdata;
imshow(I);
%此处添加图像处理内容,如对图像画框,画线等操作
saveas(gcf,['C:\Users\shitao\Desktop\s2\',int2str(i),'.jpg']);
%imwrite(mov(i).cdata(:,:,:),strtemp); %把图像写入磁盘
end
saveas与imwrite的区别
saveas(handle,['目录','文件名'])
如果只有一幅图,handle设为gcf
如果有多副,handle需单独设置
imwrite(image_data,['directory','filename'])
需要与getframe连用
两个命令都可以用来保存图像,区别在于
1、背景色:saveas保存的图像 背景色自动设置为白色,imwrite保存图像为所见即所得
2、图像大小: saveas无视你设置的图像大小,按默认保存,imwrite保存所见即所得
contrast example:在当前目录下image文件夹下找到两个图像,对比一下
clear
clc
x=0:pi/100:2*pi;
y=sin(x);
h=plot(x,y); % h为plot线的句柄handle
set(gcf,'position',[80,100,400,600])
% 将图像设置为距屏幕左下角 [80,像素
% 图像大小设置为400*600像素
set(gcf,'color',[1,1,1]) % 背景色设置为白色
mkdir image
% 在当前文件夹下新建image文件夹,如果已存在会warning,不影响运行
% ========================
saveas(gcf,['image','test1.jpg'])
% ========================
f=getframe(gcf);
imwrite(f.cdata,['image','test2.jpg'])
三、printf
用法:print(图形句柄,存储格式,文件名);
图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3.用gcf可以获取当前窗口句柄。
指定存储格式。常用的有:
png格式:‚-dpng‘ (推荐这一种,与bmp格式一样清晰,文件也不大)
jpeg: ‚-djpeg‘(文件小,较清晰)
tiff: ‚-dtiff‘
bmp: ‚-dbitmap‘(清晰,文件极大)
gif: ‚-dgif‘(文件小但不清晰)
例如
<font color="#000000" size="2">% print(figure_handle,fileformat,filename)
x=-pi:2*pi/300:pi;
y=sin(x);
plot(x,y);
%Matlab根据文件扩展名,自动保存为相应格式图片,另外路径可以是绝对也可以是相对
print(gcf,'-dpng','abc.png') %保存为png格式的图片到当前路径</font>
注意:print函数必须紧跟在plot函数之后使用。
展开全部
由于你把y的标签的字符变多,导致ylabel超出左边界.
不过你可以用print函数
print -djpeg -r300 Young.jpg
生成出来的图就没有问题.
不过你可以用print函数
print -djpeg -r300 Young.jpg
生成出来的图就没有问题.
追问
你的这个方法确实管用。还有问题希望给个解释。y的标签的字符变多,导致ylabel超出左边界,什么是“y的标签的字符变多”?ylabel('杨氏模量B(y)')这条命令有什么问题?会使得y的标签字符变多?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那你就直接用截图工具截图
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询