【问题标题】:Graphs: contours, arrow and naming图表:等高线、箭头和命名
【发布时间】:2014-09-14 10:54:36
【问题描述】:

我必须画一些图形(首选 pyplot,但不是强制性的),但要以一种非常具体的方式。这是我想要的一个例子:

我已经知道如何使用 pyplot 来获得我想要的大部分内容。 我不知道的:

  • 如何命名图表? (A B C D...)。我也希望能够设置字母的位置,就像在图片上一样。在左上角。

  • 有没有办法在轴上添加一个箭头,如图所示?我对这个不抱太大希望。也许我可以在轴的图例中使用 LaTex,并包含类似 \arrow 的内容?

【问题讨论】:

标签: python graphics graph matplotlib


【解决方案1】:
  1. 移除右侧和顶部的轴刺:

    要删除右侧和顶部的刺,您可以调用:

    for spine_loc in ('top', 'right'):
        ax.spines[spine_loc].set_visible(False)
    

    接下来,您需要调用这些函数来删除刻度:

    ax.yaxis.set_ticks_position('left')
    ax.xaxis.set_ticks_position('bottom')
    
  2. 要设置标题的位置,可以使用轴标题实例的set_position方法:

    title = ax.set_title('test')
    title.set_position([-0.1, 1])
    

    坐标似乎是axes fraction,我还没有找到一种方法来指定figure fraction 或任何其他常见的选项,例如ax.annotate。但这会让你到达你想去的地方,这也是有道理的,因为这里的标题链接到一个轴实例,而不是例如图形窗口。

  3. 添加箭头表示坐标递增的方向: 可以轻松绘制箭头,只需使用annotate 并指定arrowprops,同时将字符串留空。通过为xycoordstextcoords 指定正确的选项,生成的箭头可以定位在任何位置,甚至在轴之外。 虽然,您可以轻松地在 Latex 中为您的 xlabel(或 ylabel)指定上划线箭头:

    ax.set_xlabel(r'$\overrightarrow{X} (\mu{m})$')
    

    但我认为这并不完全是您想要的,因为箭头似乎只表示这些图中坐标增加的方向。在这种情况下,那里的箭头是chartjunk,但当然这是您的选择。

您还应该看看 matplotlib 中的 axisline example,它展示了如何使用 SubplotZero 类。就像我们大多数人在高中时习惯的那样,让两个脊椎在 (0,0) 处交叉变得相对容易。该示例还解决了此处描述的问题 (1) 和 (3)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多