如何将一个图形的轴分配给另一个图形的轴?
How to assign axes from one figure to axes from another figure?
各位!
我想将一个图形的轴分配给另一个图形的轴,你能告诉我怎么做吗?
实际上,我有两个函数,都是 return 轴。我想创建一个带有两个轴的新图形,这两个轴将准确表示我从函数中获得的两个轴。我尝试使用属性进行操作,但我失败了:(
所以这是我的代码示例:
def draw(data, markup_data, size = 7):
...
_, ax2 = plt.subplots(figsize=(7, 7))
ax2.scatter(x, y, s=size, c=data, linewidths=0, alpha=0.9)
ax2.grid(False)
return ax2
主要内容:
fig, axes = plt.subplots(1,2, figsize=(10,5))
axes[0] = draw(data_1)
axes[1] = draw(data_2)
fig.show()
轴不能移动到另一个图形。推荐的方法是将 ax
作为参数提供给 draw(....., ax=...)
.
代码结构如下:
from matplotlib import pyplot as plt
def draw(data, size=7, ax=None):
if ax is None:
ax = plt.gca() # use current axis if none is given
ax.scatter(data['x'], data['y'], s=size, c=data['c'], linewidths=0, alpha=0.9)
ax.grid(False)
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
draw(data_1, ax=axes[0])
draw(data_2, ax=axes[1])
fig.show()
通常还会提供 scatter
的参数。 Python 通过 **kwargs
支持此类额外关键字并将它们转换为字典。对于用户未提供的 scatter
参数,draw
函数可以设置自己的默认值。这是一个更详细的示例:
from matplotlib import pyplot as plt
import numpy as np
def draw(data, size=7, ax=None, **kwargs):
if ax is None:
ax = plt.gca() # use current axis if none is given
print(kwargs)
if 's' not in kwargs:
kwargs['s'] = 7
if 'linewidths' not in kwargs:
kwargs['linewidths'] = 0
if 'alpha' not in kwargs:
kwargs['alpha'] = 0.9
print(kwargs)
ax.scatter(data['x'], data['y'], c=data['c'], **kwargs)
ax.grid(False)
data_1 = {'x': np.random.rand(800), 'y': np.random.rand(800), 'c': np.random.rand(800)}
data_2 = {'x': np.random.rand(200), 'y': np.random.rand(200), 'c': np.random.rand(200)}
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
draw(data_1, ax=axes[0])
draw(data_2, ax=axes[1], linewidths=1, edgecolor='gold', s=20)
fig.show()
各位!
我想将一个图形的轴分配给另一个图形的轴,你能告诉我怎么做吗?
实际上,我有两个函数,都是 return 轴。我想创建一个带有两个轴的新图形,这两个轴将准确表示我从函数中获得的两个轴。我尝试使用属性进行操作,但我失败了:(
所以这是我的代码示例:
def draw(data, markup_data, size = 7):
...
_, ax2 = plt.subplots(figsize=(7, 7))
ax2.scatter(x, y, s=size, c=data, linewidths=0, alpha=0.9)
ax2.grid(False)
return ax2
主要内容:
fig, axes = plt.subplots(1,2, figsize=(10,5))
axes[0] = draw(data_1)
axes[1] = draw(data_2)
fig.show()
轴不能移动到另一个图形。推荐的方法是将 ax
作为参数提供给 draw(....., ax=...)
.
代码结构如下:
from matplotlib import pyplot as plt
def draw(data, size=7, ax=None):
if ax is None:
ax = plt.gca() # use current axis if none is given
ax.scatter(data['x'], data['y'], s=size, c=data['c'], linewidths=0, alpha=0.9)
ax.grid(False)
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
draw(data_1, ax=axes[0])
draw(data_2, ax=axes[1])
fig.show()
通常还会提供 scatter
的参数。 Python 通过 **kwargs
支持此类额外关键字并将它们转换为字典。对于用户未提供的 scatter
参数,draw
函数可以设置自己的默认值。这是一个更详细的示例:
from matplotlib import pyplot as plt
import numpy as np
def draw(data, size=7, ax=None, **kwargs):
if ax is None:
ax = plt.gca() # use current axis if none is given
print(kwargs)
if 's' not in kwargs:
kwargs['s'] = 7
if 'linewidths' not in kwargs:
kwargs['linewidths'] = 0
if 'alpha' not in kwargs:
kwargs['alpha'] = 0.9
print(kwargs)
ax.scatter(data['x'], data['y'], c=data['c'], **kwargs)
ax.grid(False)
data_1 = {'x': np.random.rand(800), 'y': np.random.rand(800), 'c': np.random.rand(800)}
data_2 = {'x': np.random.rand(200), 'y': np.random.rand(200), 'c': np.random.rand(200)}
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
draw(data_1, ax=axes[0])
draw(data_2, ax=axes[1], linewidths=1, edgecolor='gold', s=20)
fig.show()