在matplotlib中,如何在图形的两侧显示轴?

时间:2011-08-09 15:27:13

标签: python graphics matplotlib plot

我想在绘图的两边用matplotlib画一个带有轴的图,类似于这个图(颜色与这个问题无关):

plot

如何使用matplotlib

执行此操作

注意:与示例图中显示的相反,我希望两个轴完全相同,并且只想显示一个图。添加两个轴只是为了使图表更容易阅读。

3 个答案:

答案 0 :(得分:47)

您可以使用tick_params()(我在Jupyter笔记本中执行此操作):

import matplotlib.pyplot as plt

bar(range(10), range(10))
tick_params(labeltop=True, labelright=True)

生成此图片:

Bar plot with both x and y axis labeled the same

UPD:为子图添加了一个简单示例。您应该将tick_params()与轴对象一起使用。

此代码设置为仅显示顶部子图的顶部标签和底部子图的底部标签(具有相应的刻度):

import matplotlib.pyplot as plt

f, axarr = plt.subplots(2)

axarr[0].bar(range(10), range(10))
axarr[0].tick_params(labelbottom=False, labeltop=True, labelleft=False, labelright=False,
                     bottom=False, top=True, left=False, right=False)

axarr[1].bar(range(10), range(10, 0, -1))
axarr[1].tick_params(labelbottom=True, labeltop=False, labelleft=False, labelright=False,
                     bottom=True, top=False, left=False, right=False)

看起来像这样:

Subplots ticks config example

答案 1 :(得分:12)

在线文档中有几个相关的例子:

答案 2 :(得分:2)

我之前使用以下内容完成了此操作:

# Create figure and initial axis    
fig, ax0 = plt.subplots()
# Create a duplicate of the original xaxis, giving you an additional axis object
ax1 = ax.twinx()
# Set the limits of the new axis from the original axis limits
ax1.set_ylim(ax0.get_ylim())

这将完全复制原始的y轴。