【问题标题】:Duplicate matplotlib plot in subplots在子图中重复 matplotlib 图
【发布时间】:2021-04-15 18:54:29
【问题描述】:

我对 Python 和 matplotlib 还很陌生。我想绘制一些东西,并在右侧绘制主要情节的细节。但考虑到实际情节的复杂性,我不想明确地复制情节

MWE

import numpy as np
import matplotlib.pyplot as plt

x=np.arange(0,10,0.01)
y=np.sin(x)

fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot(x,y)

# I WANT TO AVOID THIS LINE
ax2.plot(x,y)
# AND USE SOMETHING LIKE ax2=ax1

ax2.set_xlim([0.5,0.7])
ax2.set_ylim(np.sin(ax2.get_xlim()))
plt.show();

谢谢

【问题讨论】:

  • 创建一个专门的函数来完成所有的绘图并将其传递给轴实例两次,即ax1ax2

标签: python matplotlib subplot


【解决方案1】:

感谢@BigBen 的评论,我做了以下事情

import numpy as np
import matplotlib.pyplot as plt

x=np.arange(0,10,0.01)
y=np.sin(x)

def plotty(x, y, ax):
    ax.plot(x,y)

fig, (ax1, ax2) = plt.subplots(1, 2)

plotty(x, y, ax1)

plotty(x, y, ax2)

ax2.set_xlim([0.5,0.7])
ax2.set_ylim(np.sin(ax2.get_xlim()))
plt.show();

我的实际函数根据参数列表计算 PSD,将多个光谱放在同一个图上。这种语法相当优雅和紧凑。

谢谢

【讨论】:

  • 你定义的函数完全没有必要,直接说,例如ax1.plot(x, y)
  • 我同意。这只是一个例子。就我而言,我的情节是使用 10 行 ax1.plot() 生成的,调用了几个数据系列。我想将ax1 复制到ax2,然后重置轴限制,以放大整个图的较小区域。我不想把这 10 行写两次,这将包含在我的 plotty 函数中
猜你喜欢
  • 2021-10-30
  • 1970-01-01
  • 2012-09-04
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2020-12-15
  • 2022-08-16
相关资源
最近更新 更多