Python 如何在不搜索Google或Stackoverflow的情况下学习Matplotlib?

Python 如何在不搜索Google或Stackoverflow的情况下学习Matplotlib?,python,graphics,matplotlib,plot,Python,Graphics,Matplotlib,Plot,我对Matplotlib并不陌生。虽然我不是每天(或者每周,甚至每个月)都用它,但我已经用它做了很多数据。因此,我往往会忘记一些基本的事情,例如,如何添加图例,如何添加颜色栏,如何自定义颜色贴图,如何更改图形特定部分的字体,如何制作一些透明度效果,等等。当然,每次我有问题时,我总是可以用谷歌搜索它,谷歌很可能会带我去stackoverflow或者其他类似的网站,或者一些博客文章,我几乎总能找到解决方案。这给我的印象是,“官方”文档没有它应有的用处 但我一定是错了,即官方文件必须非常有用,否则那些

我对Matplotlib并不陌生。虽然我不是每天(或者每周,甚至每个月)都用它,但我已经用它做了很多数据。因此,我往往会忘记一些基本的事情,例如,如何添加图例,如何添加颜色栏,如何自定义颜色贴图,如何更改图形特定部分的字体,如何制作一些透明度效果,等等。当然,每次我有问题时,我总是可以用谷歌搜索它,谷歌很可能会带我去stackoverflow或者其他类似的网站,或者一些博客文章,我几乎总能找到解决方案。这给我的印象是,“官方”文档没有它应有的用处

但我一定是错了,即官方文件必须非常有用,否则那些回答问题的人怎么知道答案?也许他们是“内部人”(Matplotlib的开发者)

所以我的问题是,如果你不是开发人员(但如果你是,欢迎你回答这个问题),假设你在这里回答了许多与Matplotlib相关的问题,你如何在不询问谷歌的情况下自学这些技术?如果你没有立即想到答案(不是谷歌,因为是你在回答这个问题,在那之前,谷歌可能还没有答案),你会在哪里寻找答案,如何寻找答案

请注意,我不是在抱怨文档。我想我只是没有找到一个有效的方法来利用它

或者,由于Matplotlib的内在复杂性,找到特定请求的解决方案不可避免地不简单?所谓内在复杂性,我的意思是,在Matplotlib中,类似的事情通常可以用许多不同的方式来完成,因此,如果一个人在开始时选择了一种特定的(无论出于何种原因都不常见)方式,后来遇到了一个问题,那么这个问题的解决方案可能没有在手册中明确列出,也许只有那些知道Matplotlib在幕后是如何工作的大师才能想出一个解决方案

教一个人如何钓鱼比给一个人一条鱼更有帮助

注意:我今天遇到的具体问题是在一个图形中添加一个颜色条。在我的例子中,有点“特殊”的是,主图像是一组多边形,每个多边形的颜色分别设置。因此,简单的colorbar函数似乎不起作用,至少不像“matplotlib colorbar示例”的第一个Google结果中所显示的那样。在这个特定的案例中,第二个谷歌结果确实解决了这个问题,但这是在多次尝试第一个谷歌结果(以及使用其他关键字搜索)后才发现的,这有点令人沮丧。。。顺便说一下,我以前

fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111, ...)
要设置轴框(这是必要的,因为我的多边形必须添加到先前存在的轴帧),因此我必须使用

ax.xaxis.label.set_fontsize(20)

更改xaxis标签的字体大小,这是经过多次谷歌搜索后才发现的。我怎么知道ax有一个属性xaxis,xaxis有一个属性标签,标签有一个函数集_fontsize,当它们的名称不像这里那么明显时,它们的含义是什么?

使用python命令行,我通常试图通过matplotlib本身找到方法,使用python来阅读它

假设你的例子:

fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111, ...)
问题

我怎么知道ax有一个属性xaxis,xaxis有一个属性标签,标签有一个函数集\u fontsize

回答

查找
目录

for item in dir(ax):
    print item
#or in case i guess there should be a setter for sth. i search:
for item in dir(ax):
    if item.startswith("set_"):
        print item
#or if i search sth. about labels:
for item in dir(ax):
    if "label" in item:
        print item
问题

当它们的名字不像这里那么明显时,它们的意义是什么

回答

当我发现某物有希望时,我读了
文档字符串

print ax.xaxis.label.set_size.__doc__
matplotlib中的docstring通常非常有用,足以解释setter和getter方法

如果这没有帮助,我会在文档中查找要搜索的类:

>>>type(ax.xaxis.label)
<class 'matplotlib.text.Text'> 
>类型(ax.xaxis.label)

在这个例子中,我需要什么呢?

好吧,如果你愿意的话,还有必应。。有一个你可以使用的“快速搜索”框。你可以随时阅读代码并找出答案。这就是许多社区文档在Axis文档中的写入方式。它提到了一个返回Axis实例的
get_xaxis
方法。在Axis的文档中,它提到了一个返回文本实例的
get\u label
方法。在文本文档中,它列出了一种
set\fontsize
方法。诚然,它需要一些深入研究,但这一切都在那里。该文档作为API文档非常好,因为如果您头脑中有对象结构,并且大致了解您想要的函数,那么查找您需要了解的内容就非常容易。我所知道的大部分是通过a)回答SO问题(这是一个很好的练习)b)示例库c)阅读文档来完成a)和d)在c)失败时阅读源代码。我认为你的方法是正确的。谢谢也许耐心、冷静和像侦探一样工作是关键,因为有时当一个人急于找到解决方案时,他无法非常仔细地查看“dir”中包含的文档或信息。