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

답변 (1개)

Liang Zhan
Liang Zhan 2011년 4월 8일

0 개 추천

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

Walter Roberson
Walter Roberson 2011년 4월 8일
What error message does it come out with?
Liang Zhan
Liang Zhan 2011년 4월 8일
------------------------------------------------------------------------
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 2011년 4월 8일
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 2011년 4월 8일
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 2011년 4월 8일
forgot to mention, I use R2007a
Walter Roberson
Walter Roberson 2011년 4월 8일
How exactly are you running in the background ?
Liang Zhan
Liang Zhan 2011년 4월 8일
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 2011년 4월 8일
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 2011년 4월 8일
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 2011년 4월 8일
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 2011년 4월 8일
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 2011년 4월 8일
Have you tried the Matlab File Exchange contribution export_fig ?
Liang Zhan
Liang Zhan 2011년 4월 8일
no, but I will try it now
Liang Zhan
Liang Zhan 2011년 4월 8일
Wow~, it works very well, thanks a lot for your suggestion. It solved me a big problem, appreciate!!!

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 MATLAB에 대해 자세히 알아보기

질문:

2011년 4월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by