C_Z*_*_Z_ 35 python matplotlib
我正在制作一些互动图,我想添加一个颜色条图例.我不希望颜色条在它自己的轴上,所以我想将它添加到现有轴.我这样做有困难,因为我发现的大多数示例代码都为colorbar创建了一个新的轴.
我尝试使用下面的代码matplotlib.colorbar.ColorbarBase
,它为现有的轴添加了一个颜色条,但它给了我奇怪的结果,我无法弄清楚如何指定颜色条的属性(例如,它放在轴上的位置和什么它的大小)
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.cm import coolwarm
import numpy as np
x = np.random.uniform(1, 10, 10)
y = np.random.uniform(1, 10, 10)
v = np.random.uniform(1, 10, 10)
fig, ax = plt.subplots()
s = ax.scatter(x, y, c=v, cmap=coolwarm)
matplotlib.colorbar.ColorbarBase(ax=ax, cmap=coolwarm, values=sorted(v),
orientation="horizontal")
Run Code Online (Sandbox Code Playgroud)
使用fig.colorbar
而不是matplotlib.colorbar.ColorbarBase
仍然没有给我我想要的东西,我仍然不知道如何调整颜色条的属性.
fig.colorbar(s, ax=ax, cax=ax)
Run Code Online (Sandbox Code Playgroud)
假设我想在左上角有颜色条,在图的顶部延伸大约一半.我该怎么做呢?
我最好为此编写一个自定义函数,也许使用LineCollection
?
Ram*_*nez 50
该技术通常用于图中的多轴.在这种情况下,通常需要有一个颜色条,其尺寸与imshow的结果相对应.使用轴网格工具包可以轻松实现这一点:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
data = np.arange(100, 0, -1).reshape(10, 10)
fig, ax = plt.subplots()
divider = make_axes_locatable(ax)
cax = divider.append_axes('right', size='5%', pad=0.05)
im = ax.imshow(data, cmap='bone')
fig.colorbar(im, cax=cax, orientation='vertical')
plt.show()
Run Code Online (Sandbox Code Playgroud)
Joe*_*ton 41
颜色条必须有自己的轴.但是,您可以创建与前一个轴重叠的轴.然后使用cax
kwarg告诉fig.colorbar
使用新轴.
例如:
import numpy as np
import matplotlib.pyplot as plt
data = np.arange(100, 0, -1).reshape(10, 10)
fig, ax = plt.subplots()
cax = fig.add_axes([0.27, 0.8, 0.5, 0.05])
im = ax.imshow(data, cmap='gist_earth')
fig.colorbar(im, cax=cax, orientation='horizontal')
plt.show()
Run Code Online (Sandbox Code Playgroud)
小智 5
无法将其添加为评论,但如果有人有兴趣将接受的答案与子图一起使用,则应在特定轴对象上形成分隔线(而不是在从 plt.subplots 返回的 numpy.ndarray 上)
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
data = np.arange(100, 0, -1).reshape(10, 10)
fig, ax = plt.subplots(ncols=2, nrows=2)
for row in ax:
for col in row:
im = col.imshow(data, cmap='bone')
divider = make_axes_locatable(col)
cax = divider.append_axes('right', size='5%', pad=0.05)
fig.colorbar(im, cax=cax, orientation='vertical')
plt.show()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
79281 次 |
最近记录: |