【问题标题】:Setting position of twin axes not possible无法设置双轴位置
【发布时间】:2019-11-06 16:43:19
【问题描述】:

我有这个代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
a = np.array([1,2,3])
b = a 
ax1.plot(a,b)
ax2 = ax1.twinx()
ax2.set_position(matplotlib.transforms.Bbox([[0.125, 0.125], [0.9, 0.2]]))
c = np.array([4,5,6])
d = c
ax2.plot(c,d)
plt.show()

当我用 Python 2 运行它时,结果是:

问题是当我尝试使用 Python 3 使用相同的代码时,我得到了这张图片:

如何使用 Python 3 获得相同的结果?

【问题讨论】:

  • 我想我已经在你之前的问题中评论过你不能在双轴上使用set_position。这是一个错误,现已修复(因此它与 python 版本无关,而是与使用中的 matplotlib 版本有关)。您可以使用 inset_axes 而不是通常的子图。
  • 感谢您的回答。可以举个例子吗?
  • 您使用的是哪个版本的 matplotlib,分别是 Python 2 和 Python 3?

标签: python python-3.x python-2.7 matplotlib


【解决方案1】:

这是一个错误,现已修复(因此它与 python 版本无关,而是与使用的 matplotlib 版本有关)。您可以使用 inset_axes 而不是通常的子图。后者可能如下所示:

import numpy as np
from matplotlib.transforms import Bbox
import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111, label="first")
ax2 = fig.add_subplot(111, label="second")

ax2.set_position(Bbox([[0.125, 0.125], [0.9, 0.2]]))
ax1.get_shared_x_axes().join(ax1, ax2)
ax2.yaxis.tick_right()
ax2.tick_params(bottom=False, labelbottom=False)
ax2.set_facecolor("none")

a = np.array([1,2,3])
ax1.plot(a,a)

c = np.array([4,5,6])
ax2.plot(c,c)

plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 2014-06-02
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多