1

我写了一个科学包,它有很多不同的绘图功能,可以计算数据然后绘制图表。我经常想在一个图中绘制几条曲线,但我不确定如何正确处理这个问题。代码可能如下所示:

plot_temperature_graph_of_day(day='Monday')
plot_temperature_graph_day(day='Tuesday')
plot_week_mean_temperature()
plot_temperature_graph_of_several_days(('Wednesday','Thursday'))

关键是我想为这些绘图中的每一个设置线型 - 前三个函数每个生成一个绘图,第四个函数生成两个。所有的都进入同一个数字。要设置样式,我可以

  • 给每个函数一个参数'linestyle',它将给pyplot.plot函数
  • 返回 Line2D 对象并使用setp
  • 不要让函数进行任何绘图,只返回数据
  • 提供一个执行实际绘图的回调函数

您对策略有什么建议吗?

4

1 回答 1

1

从用户的角度来看,我个人的偏好是有一个合理的默认值,并且可以访问包的内部,这样我就可以在我真的需要或想要的时候进行调整。

在这种特殊情况下,您将在 matplotlib 之上添加用户友好的功能。因此,通过不授予用户对行实例的访问权限,您还隐藏了基本包的某些功能,而在我看来,这(几乎)总是一件坏事。由于 matplotlib 本身提供了一大堆有用的*argsand **kwargs,所以应该有理由不在您的功能中接受它们,而只是将它们转发到底层的绘图例程。如果用户提供了无意义的参数,那是他们的问题,而不是您的问题 --- 如果您愿意,您可以尝试捕获绘图引擎引发的异常。

此外,如果您返回的不仅仅是一条线,而是完整的axes实例,您可能会为某个可怜的研究生省去很多汗水,她的老板命令她在情节上添加一个网格。

于 2013-02-19T17:52:31.067 回答