Plotting cell array with empty cells - changing linespec
이전 댓글 표시
I have up to 6 data pairs stored in a cell array.
f={x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 x6 y6}
However, it many not always be all 6 data pairs, and I might end up with:
f={[] [] x2 y2 [] [] [] [] x5 y5 [] []}
It was shown to me that by using:
h=plot(f{~cellfun(@isempty,f)},'o','MarkerSize',1.5)
That empty cells are ignored. The data is plotted fine, but the linespec properties are not being applied to all data, only the last data series plotted.
Additionally,trying to change the marker edge and face color results in only the last handle being modified.
set(h(1),'MarkerEdgeColor','r','MarkerFaceColor','r')
set(h(2),'MarkerEdgeColor','y','MarkerFaceColor','y')
What am I missing?
Also, one issue that seems important, using this method, will there always be 6 handles, even if some are "blank" because their associated cells are empty? Is it possible to know that x3 y3 will always be f(3)?
채택된 답변
추가 답변 (2개)
Patrick Kalita
2011년 11월 3일
I would suggest using a property-value pair to set the marker instead of a linespec string in this case:
f = { 1:3, rand(1,3), [], [], 4:6, rand(1,3), [], [], 7:9, rand(1,3), [], [] }
P = plot(f{:}, 'Marker','o','MarkerSize',1.5)
Also, you don't have to filter out the empty arrays. plot will only draw lines for non-empty arrays and return handles for the lines it drew:
>> P
P =
177.0447
178.0382
179.0382
The first element of P will be the handle of the line drawn with the first pair of x and y vectors.
댓글 수: 2
Jared
2011년 11월 3일
Patrick Kalita
2011년 11월 3일
It seems like trying to do this one call to PLOT is making your life harder rather than easier. Have you considered multiple calls to PLOT combined with the HOLD command?
카테고리
도움말 센터 및 File Exchange에서 Line Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!