how do use patch in the background?

I know matlab has patch function, which is patch(X,Y,Z,C) creates a patch in 3-D coordinates. If the coordinate data does not define closed polygons, patch closes the polygons. The data can define concave or intersecting polygons. However, if the edges of an individual patch face intersect themselves, the resulting face might be only partly filled. In that case, it is better to divide the face into smaller polygons.
I can use it to plot my figure normally, but the question is I need to do this work in the background (something like use patch to plot the figure(no display), then save the figure as jpg or eps in the background, then only display the jpg or eps.)
can anyone help me? Thanks,
LZ

Respuestas (1)

Liang Zhan
Liang Zhan el 8 de Abr. de 2011
I run the code in unix background, and the main code is:
h=figure('Visible','off');
for i=1:256
for j=1:256
patch(XX, YY, ZZ,C,'LineStyle', 'none');
end
end
saveas(h,'figure_test_no_display.jpg');
then it come out a very long error message, which I can not post here.

14 comentarios

Walter Roberson
Walter Roberson el 8 de Abr. de 2011
What error message does it come out with?
Liang Zhan
Liang Zhan el 8 de Abr. de 2011
------------------------------------------------------------------------
Segmentation violation detected at Fri Apr 8 14:33:43 2011
------------------------------------------------------------------------
Configuration:
MATLAB Version: 7.4.0.287 (R2007a)
MATLAB License: 95863
Operating System: Linux 2.6.9-89.0.9.ELsmp #1 SMP Mon Aug 24 07:59:15 EDT 2009 x86_64
GNU C Library: 2.3.4 stable
Window System: No active display
Current Visual: None
Virtual Machine: Java 1.5.0_04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
Default Charset: US-ASCII
Register State:
rax = 0000000001583040 rbx = 0000000000bf46b0
rcx = 3ff0000000000000 rdx = 0000000000000000
rbp = 0000007fbfe00010 rsi = 0000000001583040
rdi = 0000002a9dcc4a60 rsp = 0000007fbfdffff0
r8 = 0000000000000000 r9 = 0000000000000009
r10 = 0000007fbfff5701 r11 = 0000002a98cafa90
r12 = 0000002a9dcc4a60 r13 = 0000002a9dcc4a60
r14 = 0000007fbfff5970 r15 = 0000000000000000
rip = 0000002a9a9ea7d3 flg = 0000000000010206
Stack Trace:
[0] libmwhardcopy.so:psStringDescent(105, 0, 0x00bf46b0, 0x2a9dcc4a60) + 99 bytes
[1] libmwgui.so:wm_StringDescent(WinRec_tag*)(0, 0, 0x00bf46b0, 0x2a9dcc4a60) + 86 bytes
.....
Walter Roberson
Walter Roberson el 8 de Abr. de 2011
I ran the code with XX, YY, ZZ, and C each set to different rand(1,53), and had no problems in 2008b on Linux-64.
Liang Zhan
Liang Zhan el 8 de Abr. de 2011
yes, in normal, this code is fine, and has no problem,
but I run this code in unix "background",and it come out these errors.
Liang Zhan
Liang Zhan el 8 de Abr. de 2011
forgot to mention, I use R2007a
Walter Roberson
Walter Roberson el 8 de Abr. de 2011
How exactly are you running in the background ?
Liang Zhan
Liang Zhan el 8 de Abr. de 2011
lzhan@cerebro-lsh4.data.cluster.loni.ucla.edu[31]% matlab
Warning: Unable to open display , MATLAB is starting without a display.
You will not be able to display graphics on the screen.
< M A T L A B >
Copyright 1984-2007 The MathWorks, Inc.
Version 7.4.0.287 (R2007a)
January 29, 2007
Warning: Name is nonexistent or not a directory: /usr/lshare/prog/pub/spm/spm2.
Warning: Name is nonexistent or not a directory: /usr/lshare/prog/pub/spm/spm2.
To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.
>> ODF_plot
then it come out those error message
Walter Roberson
Walter Roberson el 8 de Abr. de 2011
Undefined function or variable sphere_tri
The missing mask.mat and ack1.mat are also going to cause problems for other people wishing to debug your code.
Walter Roberson
Walter Roberson el 8 de Abr. de 2011
I tried switching to
set(h,'Renderer','painters')
in my sample code. It is taking a long time to execute; hard to say yet ha terminate.
Liang Zhan
Liang Zhan el 8 de Abr. de 2011
let me test in my side.
where should I add set(h,'Renderer','painters')?
just before
saveas(h,'figure_test_no_display.jpg')?
thanks,
Liang Zhan
Liang Zhan el 8 de Abr. de 2011
it shows error
Warning: RGB color data not yet supported in Painter's mode.
> In /usr/local/matlab-7.4-1_64bit/toolbox/matlab/graphics/private/render.p>render at 144
In print at 267
In saveas at 159
In ODF_plot at 89
Warning: RGB color data not yet supported in Painter's mode.
> In /usr/local/matlab-7.4-1_64bit/toolbox/matlab/graphics/private/render.p>render at 144
In print at 267
In saveas at 159
In ODF_plot at 89
Warning: RGB color data not yet supported in Painter's mode.
> In /usr/local/matlab-7.4-1_64bit/toolbox/matlab/graphics/private/render.p>render at 144
In print at 267
In saveas at 159
In ODF_plot at 89
Walter Roberson
Walter Roberson el 8 de Abr. de 2011
Have you tried the Matlab File Exchange contribution export_fig ?
Liang Zhan
Liang Zhan el 8 de Abr. de 2011
no, but I will try it now
Liang Zhan
Liang Zhan el 8 de Abr. de 2011
Wow~, it works very well, thanks a lot for your suggestion. It solved me a big problem, appreciate!!!

Iniciar sesión para comentar.

Categorías

Más información sobre MATLAB en Centro de ayuda y File Exchange.

Preguntada:

el 8 de Abr. de 2011

Community Treasure Hunt

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

Start Hunting!

Translated by