Using "print" with no desktop?

2 visualizaciones (últimos 30 días)
Marian
Marian el 17 de En. de 2014
Comentada: Marian el 22 de En. de 2014
I've got code that runs every hour and updates a graph. Using the print function, it creates a graph and saves it as a .jpg. However, the resolution is very low. When I run the code manually, it creates and saves the .jpg exactly as I want it. But when I am logged out (and the desktop is not available to MATLAB), the image created is poor quality. Here's my code for saving the plot:
print -djpeg birdmet.jpg -r100
drawnow
set(gcf, 'Color', 'white'); % white bckgr
I also have a .csh script to run my code, maybe it's the cause of the problem?:
#! /bin/csh
matlab -nodesktop -r "run /home/mmateling/realtime/capebird.m"
Any help would be greatly appreciated!
  2 comentarios
Oliver Woodford
Oliver Woodford el 17 de En. de 2014
You haven't provided code that we can just run. However, I created a script called test.m containing
plot(rand(3));
drawnow;
print('test.jpg', '-djpeg');
and called
matlab -nodesktop -r "test"
and it worked fine, producing a sensible looking jpeg. That was on a Windows PC. What does your code run on?
Marian
Marian el 17 de En. de 2014
My code runs on Linux. It uses data that it pulls from 48 .dat files and plots them in chronological order with 4 subplots. The quality isn't awful, I would just prefer the image be larger. It creates the resolution I want (-r100) only when I am logged in, so that the desktop is accessible. When I log out (overnight), the .jpg is standard size. I've been searching the web for a way to improve the quality when run without the desktop, but to no avail.The lines I used to graph are as follows:
figure(1)
subplot(4,1,1)
plot(time,Tavg);
title(str2);
datetick('x', 'dd HH:MM');
ylabel('Temp, deg C');
print
subplot(4,1,2)
plot(time,pres,'r');
datetick('x', 'dd HH:MM');
ylabel('Pres, hPa');
print
subplot(4,1,3)
plot(time,hum,'g');
datetick('x', 'dd HH:MM');
ylabel('RH, %');
print
subplot(4,1,4)
plot(time,spd,'m');
datetick('x','dd HH:MM');
ylabel('Wnd Spd, m/s');
print
xlabel(str);

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 20 de En. de 2014
Did you try to set the size of the figure explicitly?
  2 comentarios
Marian
Marian el 21 de En. de 2014
I thought that was what the -r100 code in the print statement was for? Otherwise, there was no other place where the code determines figure size... is there a way to do this?
Marian
Marian el 22 de En. de 2014
Ok, I've figured out how to set the figure size and it finally worked! Thanks so much!! For anyone else reading this question: ... http://www.mathworks.com/help/matlab/creating_plots/changing-a-figures-settings.html#f3-137210 ...

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Interactive Control and Callbacks en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by