gpt4 book ai didi

python - 分别保存散点图的颜色条

转载 作者:行者123 更新时间:2023-12-04 00:06:30 24 4
gpt4 key购买 nike

我有带颜色条的散点图,我将其另存为 PNG 图像。我需要图具有一定的 figsize 但添加颜色条比例原始图。

import pylab as plt

plt.figure(figsize=FIGSIZE)
plt.scatter(X, Y, c=Z, s=marker_size, norm=LogNorm(), vmin=VMIN, vmax=VMAX, cmap=CMAP,rasterized=True,lw=0,)
CB = plt.colorbar(ticks=TICKS, format=FORMAT)

我怎样才能将原始图(figsize 设置如上)和颜色条保存为两个单独的图像?

最佳答案

显而易见的答案是“分别绘制您的颜色条”。您需要创建一个新的图形窗口并在那里绘制您的颜色条,以防止您的第一个图形被扭曲。小例子:

import matplotlib.pyplot as plt
import numpy as np # only for dummy data

X,Y = np.mgrid[-2:3,-2:3]
Z = np.random.rand(*X.shape)
FIGSIZE = (2,3)

plt.figure(figsize=FIGSIZE)
mpb = plt.pcolormesh(X,Y,Z,cmap='viridis')
# plot the original without a colorbar
plt.savefig('plot_nocbar.png')

# plot a colorbar into the original to see distortion
plt.colorbar()
plt.savefig('plot_withcbar.png')

# draw a new figure and replot the colorbar there
fig,ax = plt.subplots(figsize=FIGSIZE)
plt.colorbar(mpb,ax=ax)
ax.remove()
plt.savefig('plot_onlycbar.png')

# save the same figure with some approximate autocropping
plt.savefig('plot_onlycbar_tight.png',bbox_inches='tight')

考虑生成的以下四个图形(单击以正确查看):

no colorbar distorted with colorbar separate colorbar with much white cropped colorbar

第一个是图形的保存版本,无需调用 colormap .这很好,这就是您要保留的内容。第二个图显示了如果我们调用 colorbar 会发生什么没有任何额外的大惊小怪:它从原始图形中占用了一些空间,这就是您想要防止的。

您必须使用 plt.subplots 打开一个新图形(和轴) , 与您原始图形的大小。通过这种方式,您可以确保生成的颜色条的大小与在原始图形中绘制的大小相同。在上面的设置中,我让 matplotlib确定颜色条本身的大小;但之后我们需要删除会污染结果图的辅助轴。 (另一种选择是在新图中手动创建一个轴,颜色条的预期大小。我怀疑这不是一个可行的行动方案。)

现在,正如您在第三个图中看到的那样,删除轴后留下的空白区域在结果图中清晰可见(但颜色条的大小相应地是完美的)。您可以在后期制作中手动剪掉这个空白区域,或者使用自动裁剪颜色条图像的东西。

我还包括了一个情节版本,其中 matplotlib 本身裁剪了大部分数字: bbox_inches='tight' savefig 的关键字参数正是这样做的。好处是生成的图像文件只包含颜色条(如上图第四张图片所示),但生成的颜色条的大小与原始图像略有不同。根据您的特定需求,您需要尝试各种可用的方法,以找到对您最方便的解决方案。

关于python - 分别保存散点图的颜色条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com