Graphic properties not working

Ben Abbott bpabbott at mac.com
Tue Mar 24 06:41:41 CDT 2009


On Mar 24, 2009, at 3:29 AM, Marco Caliari wrote:

> On Mon, 23 Mar 2009, Ben Abbott wrote:
>
>>
>> On Monday, March 23, 2009, at 10:37AM, "Marco Caliari" <marco.caliari at univr.it 
>> > wrote:
>>> Dear maintainers,
>>>
>>> I noticed that some (all?) graphic properties do not work anymore in
>>> Octave 3.1.54
>>>
>>> octave:1> contourf(peaks,'EdgeColor','blue')
>>> error: set: unknown property "EdgeColor"
>>> error: called from:
>>> error:   /usr/local/share/octave/3.1.54/m/plot/__contour__.m at  
>>> line 191, column 5
>>> error:   /usr/local/share/octave/3.1.54/m/plot/contourf.m at line  
>>> 71, column 5
>>>
>>> I don't know if it is a bug or a syntax change.
>>>
>>> Best regards,
>>>
>>> Marco
>>
>> Using matlab, your example does work. However, Matlab's hggroup has  
>> no "EdgeColor" property. It appears that Matlab is setting the  
>> "LineColor" property when the "EdgeColor" property is specified.
>>
>> If you do that directly, you'll get what you desire.
>>
>> contourf (peaks, "linecolor", "blue")
>
> Thanks, it works. I suspected a regression since  
> contourf(peaks,'EdgeColor','blue') works in Octave 3.0.x and  
> surface(peaks,'EdgeColor','blue') works in Octave 3.1.54. Anyway,  
> now I have the following (always reproducibile)
>
> octave:1> surface(peaks,'EdgeColor','blue') # it works
>
> BUT
>
> octave:2> contourf(peaks,'EdgeColor','blue') # it does not work, as  
> expected
> error: set: unknown property "EdgeColor"
> error: called from:
> error:   /usr/local/share/octave/3.1.54/m/plot/__contour__.m at line  
> 191, column 5
> error:   /usr/local/share/octave/3.1.54/m/plot/contourf.m at line  
> 71, column 5
> octave:2> surface(peaks,'EdgeColor','blue') # it does not work  
> anymore!!!
> error: gnuplot (as of v4.2) only supports 2D filled patches
> error: called from:
> error:   /usr/local/share/octave/3.1.54/m/plot/__go_draw_axes__.m at  
> line 543, column 4
> error:   /usr/local/share/octave/3.1.54/m/plot/__go_draw_figure__.m  
> at line 90, column 3
> error:   /usr/local/share/octave/3.1.54/m/plot/gnuplot_drawnow.m at  
> line 69, column 5
>
> That is, if you call surface(peaks,'EdgeColor','blue') after a  
> contourf(peaks,'EdgeColor','blue'), the former does not work anymore.
>
> Best regards,
>
> Marco

I'm not sure this is a regression. There is no "EdgeColor" property  
for Matlab's hggroup, and my memory is that Octave's hggroup is a  
rather recent addition, and was not used in 3.0.3 (?).

Mathworks appears to be doing something special. How does Matlab  
handle a situation like below?

	set (hg, "SomeProperty", SomeValue)

If the property "SomeProperty" does not exst for the hggroup with  
handle hg, does Matlab do something like ...

	set (findobj (hg, "-property", "SomeProperty"), "SomeProperty",  
SomeValue)

  ... or is the current example unique?

I haven't look into this myself, and don't have the needed knowledge  
of c++ and the sources involved to produce a proper changeset.

Marco/someone else, can you look at this?

Ben



More information about the Bug-octave mailing list