0

このコードを使用して、2 つの軸を持つ添付のプロットを作成できます。

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 は使用してはいけないマジック ナンバーです。これを説明するチュートリアルまたは重複した回答を指摘していただければ幸いです。私も見つかりません。

ここに画像の説明を入力

私は問題の解決策を持っていますが、それはハックです:

ax2.set_xlim([0,0.7])

ここに画像の説明を入力

4

1 に答える 1

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()
于 2015-02-13T03:39:35.023 に答える