【问题标题】:Graphs: contours, arrow and naming图表:等高线、箭头和命名
【发布时间】:2014-09-14 10:54:36
【问题描述】:
我必须画一些图形(首选 pyplot,但不是强制性的),但要以一种非常具体的方式。这是我想要的一个例子:
我已经知道如何使用 pyplot 来获得我想要的大部分内容。
我不知道的:
【问题讨论】:
标签:
python
graphics
graph
matplotlib
【解决方案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')
-
要设置标题的位置,可以使用轴标题实例的set_position方法:
title = ax.set_title('test')
title.set_position([-0.1, 1])
坐标似乎是axes fraction,我还没有找到一种方法来指定figure fraction 或任何其他常见的选项,例如ax.annotate。但这会让你到达你想去的地方,这也是有道理的,因为这里的标题链接到一个轴实例,而不是例如图形窗口。
-
添加箭头表示坐标递增的方向:
可以轻松绘制箭头,只需使用annotate 并指定arrowprops,同时将字符串留空。通过为xycoords 和textcoords 指定正确的选项,生成的箭头可以定位在任何位置,甚至在轴之外。
虽然,您可以轻松地在 Latex 中为您的 xlabel(或 ylabel)指定上划线箭头:
ax.set_xlabel(r'$\overrightarrow{X} (\mu{m})$')
但我认为这并不完全是您想要的,因为箭头似乎只表示这些图中坐标增加的方向。在这种情况下,那里的箭头是chartjunk,但当然这是您的选择。
您还应该看看 matplotlib 中的 axisline example,它展示了如何使用 SubplotZero 类。就像我们大多数人在高中时习惯的那样,让两个脊椎在 (0,0) 处交叉变得相对容易。该示例还解决了此处描述的问题 (1) 和 (3)。