Matplotlib Axes对象,获取Colorbar的数据

时间:2016-05-17 14:34:50

标签: python matplotlib plot

我有一个函数可以做一些绘图并返回一个轴对象:

def custom_plot(x, y, ax=None):
    if ax is None:
        ax = plt.gca()

    ax.scatter(x, y)

    return ax

ax = custom_plot(range(10), range(10))

colorbar(ax)

最后一行会抛出错误(应该如此)。 ax.get_children()返回行对象的列表,因此不适合传递给colorbar。是否可以通过轴访问散射对象,或者是否有必要返回分散,例如, s = plot.scatter(x,y,);return ax, scatter

类似,但不是答案:

1 个答案:

答案 0 :(得分:1)

抱歉,误解了这个问题。从源代码中,scatter函数似乎只返回一个路径集合,而不是以我注意到轴类的任何方式添加它。

根据情节的条件,最简单的方法就是将你的情节复制到颜色条指令中:

import matplotlib.pyplot as plt

def custom_plot(x, y, ax=None):
    if ax is None:
        ax = plt.gca()

    ax.scatter(x, y, c = x) 

    return ax

x,y = range(10), range(10)
ax = custom_plot(x,y)
plt.colorbar(ax.scatter(x, y, c = x)) 
plt.show()

实际上,您正在从没有快捷变量的轴再现绘图。但是,它不是解决问题的理想方案。

注意:我会留下这篇文章,以防万一它可以帮到你。如果不告诉我,我会删除它。

原始帖子:

您可以为散点图本身创建一个变量,并将其用作参数。也就是说你也应该为颜色提供一个地图变量。以下示例改编自您的代码:

import matplotlib.pyplot as plt

def custom_plot(x, y, ax=None):
    if ax is None:
        ax = plt.gca()

    axp = ax.scatter(x, y, c = x) # You have to give a map variable for the colorbar.

    return ax,axp # also return the plot itself

ax,axp = custom_plot(range(10), range(10))

plt.colorbar(axp) # give the plot as argument to colorbar
plt.show()

,结果如下:

Creating colorbar from outside the function plot