2011年06月21日 星期二 07:27
举例
enthought.chaco.api的 Plot 对象的plot函数
其参数列表在源代码中定义:
def plot(self, data, type="line", name=None, index_scale="linear",
value_scale="linear", origin=None, **styles):
我想问的问题是 在实际使用中 类似 color,marker, marker_trait 这样的属性 从哪里能看到?
也就是说如何查阅完整的函数参数列表呢?
2011年06月21日 星期二 09:11
由于plot函数中有一个**styles参数,因此styles是一个保存所有其它参数的字典。
你只需要看在plot中如何对styles这个字典进行处理就知道plot能接收什么参数了。
例如:
我们看到:
if styles.get("color") == "auto":
self._auto_color_idx = \
(self._auto_color_idx + 1) % len(self.auto_colors)
styles["color"] = self.auto_colors[self._auto_color_idx]
这段代码将color="auto"修改成具体的参数,因此你知道plot可以接收color参数,
并且参数值可以是"auto"。
最后我们看到:
plot = cls(index=index,
value=value,
index_mapper=imap,
value_mapper=vmap,
orientation=self.orientation,
origin = origin,
**styles)
因此styles这些参数实际上是传递给了真正创建图形的类。
例如如果plot(type="line",...),那么将用LinePlot创建曲线。
因此你需要看LinePlot都支持哪些参数:
由于LinePlot从HasTraits继承,因此styles中的参数可以用来
直接设置LinePlot及其父类中定义的所有Trait属性。
例如我在LinePlot的定义中找到了:
line_width = Float(1.0)
line_style = LineStyle
因此可以在调用plot(type="line", ...)时设置这两个参数。
2011年06月21日 星期二 09:22
恩 懂了
不过还是要请张若愚同学解释一下 marker 还有marker_trait 的参数从哪儿来
我在LinePlot里也没有知道。
其实我想问的问题最主要是 您是如何找想要的参数列表的?请您介绍一下您是如何找的?我发现类似于plot这样的函数 为什么不在**style里写全 所有可用的参数呢? 这个帮助和matlab的比 似乎差不少呢
2011年06月21日 星期二 11:41
可以这样理解:Plot类是对一系列绘图类的封装,在plot.py中可以找到:
renderer_map = Dict(dict(line = LinePlot,
scatter = ScatterPlot,
polygon = PolygonPlot,
cmap_scatter = ColormappedScatterPlot,
img_plot = ImagePlot,
cmap_img_plot = CMapImagePlot,
contour_line_plot = ContourLinePlot,
contour_poly_plot = ContourPolyPlot,
candle = CandlePlot))
根据plot()的type参数会使用其中不同的类创建图形。
可以用Spyder的跳转功能找到定义的位置。
例如打开plot.py,按住ctrl按键,然后点ScatterPlot,就跳到ScatterPlot的
定义处,在其中可以看到:
marker = MarkerTrait
# The pixel size of the marker, not including the thickness of the outline.
marker_size = Float(4.0)
按ctrl按键点MarkerTrait,跳到MarkerTrait的定义处:
MarkerTrait = Trait("square", MarkerNameDict,
editor=EnumEditor(values=marker_names))
marker_trait = MarkerTrait
2011年06月21日 星期二 13:36
谢谢 版主的耐心解答!
Zeuux © 2024
京ICP备05028076号