Matplotlib第二轴范围

时间:2015-02-13 03:11:13

标签: matplotlib multiple-axes

我可以使用以下代码生成带有两个轴的附加图:

import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

x = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.65]
y = [0, 0.15, 0.3, 0.35, 0.4, 0.55, 0.57, 0.58]

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twiny()
def func(x, pos):
    return str(2*x)
formatter = FuncFormatter(func)
ax2.xaxis.set_major_formatter(formatter)
ax1.set_ylim([0,1])
ax1.grid(b=True, which='major', color='k', linestyle='--')
ax1.plot(x, y)
plt.savefig('test.png')

但是如何让上面的x轴范围从0到1.4?我事先并不知道x范围,所以1.4是一个不应该使用的幻数。我很高兴能够指出一个解释这个或重复答案的教程。我也找不到。

enter image description here

我有一个问题的解决方案,但这是一个黑客:

ax2.set_xlim([0,0.7])

enter image description here

1 个答案:

答案 0 :(得分:1)

包括重新贴标签的主要目标是什么?

def func(x, pos):
    return str(2*x)
formatter = FuncFormatter(func)
ax2.xaxis.set_major_formatter(formatter)

似乎省略它会给你正确的答案:

import matplotlib.pyplot as plt

x = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.65]
y = [0, 0.15, 0.3, 0.35, 0.4, 0.55, 0.57, 0.58]

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twiny()
ax1.set_ylim([0,1])
ax1.grid(b=True, which='major', color='k', linestyle='--')
ax1.plot(x, y)
ax2.set_xlim(0,2*ax1.get_xlim()[1])
plt.show()