- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在使用 AxesGrid 工具包的绘图中添加另一个颜色条。例如,我在左侧使用 ImageGrid 添加了一个颜色条轴,然后在右侧手动添加了另一个。这是一个简单的例子:
f = plt.figure(1)
grid = ImageGrid(f, 111, # similar to subplot(111)
nrows_ncols=(2, 2),
axes_pad=0.01,
add_all=True,
cbar_location="left",
label_mode='L',
cbar_mode="edge",
cbar_size="3%",
cbar_pad="2%",
)
for i in range(3):
m = grid[i].matshow(np.arange(100).reshape((10, 10)))
plt.colorbar(m, grid.cbar_axes[0])
m = grid[3].matshow(np.arange(100).reshape((10, 10)), cmap='plasma')
plt.colorbar(m, shrink=0.5, anchor=(0, 0))
plt.show()
如何使新颜色条与网格中子图之一的位置完全匹配?我至少设法使用 shrink 和 anchor 来固定大小和 y 位置……但是如果我尝试考虑子图之间的填充,并且如果它们是矩形而不是正方形,它也会变得有点复杂……
最佳答案
一种选择是根据其中一个轴的位置手动放置颜色条轴。为此,首先需要绘制 Canvas ,以便知道位置。然后可以根据图像绘图的坐标创建一个新轴。这个新轴将用作颜色条轴。
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1 import ImageGrid
fig = plt.figure(1)
grid = ImageGrid(fig, 111, # similar to subplot(111)
nrows_ncols=(2, 2),
axes_pad=0.01,
add_all=True,
cbar_location="left",
label_mode='L',
cbar_mode="edge",
cbar_size="3%",
cbar_pad="2%",
)
for i in range(3):
m = grid[i].matshow(np.arange(100).reshape((10, 10)))
plt.colorbar(m, grid.cbar_axes[0])
m = grid[3].matshow(np.arange(100).reshape((10, 10)), cmap='plasma')
# first draw the figure, such that the axes are positionned
fig.canvas.draw()
#create new axes according to coordinates of image plot
trans = fig.transFigure.inverted()
g3 =grid[3].bbox.transformed(trans)
pos = [g3.x1 + g3.width*0.02, g3.y0, g3.width*0.03, g3.height ]
cax = fig.add_axes(pos) #l,b,w,h
# add colorbar to new axes
plt.colorbar(m, cax=cax)
plt.show()
此方法取决于图中轴的位置,一旦发生变化,例如由于图形被重新调整,可能会发生不可预见的事情。
另一种不依赖于绘制坐标的不同方法是(错误)使用内插轴并将内插放置在轴外。这样inset所在的坐标就是轴坐标,所以colorbar会根据轴改变位置。
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
cax = inset_axes(grid[3], "3%", "100%", loc=3, bbox_to_anchor=(1.02,0,1,1),
bbox_transform=grid[3].transAxes, borderpad=0.0)
plt.colorbar(m, cax=cax)
关于python - matplotlib axesgrid - 额外的颜色条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43306001/
我想在使用 AxesGrid 工具包的绘图中添加另一个颜色条。例如,我在左侧使用 ImageGrid 添加了一个颜色条轴,然后在右侧手动添加了另一个。这是一个简单的例子: f = plt.figure
我正在使用 AxesGrid 类绘制如下图: 代码基本上是这样的: grid = AxesGrid(fig, 111, nr
我想在 matplotlib 中创建一个 2x3 的二维直方图图,每个子图的顶部都有一个共享的颜色条和一个一维直方图。 AxesGrid除了最后一部分,我得到了一切。我尝试按照 "scatter_hi
AxesGrid工具包提供了host_subplot函数,可以创建多个平行轴,如下代码所示: from mpl_toolkits.axes_grid1 import host_subplot impo
(从this Github issue复制过来) 我正在尝试修改使用 cartopy + AxesGrid 的轴的刻度标签,按照 cartopy 文档中显示的示例 here .但与示例不同的是,我只想
我已经安装了 anaconda3 和 matplotlib。 唯一的问题是,mpl_toolkits 不是可识别的软件包。即,以下代码不起作用: import mpl_toolkits 我在谷歌上到处
我是一名优秀的程序员,十分优秀!