颜色栏更改文本值matplotlib

颜色栏更改文本值matplotlib,matplotlib,colorbar,colormap,Matplotlib,Colorbar,Colormap,给定以下代码 x = np.random.random((50))*2 -1 y = np.random.random((50)) plt.scatter(x,y,c=x**3,cmap='viridis') cb = plt.colorbar() #I want a smarter (& working) version of this cb.ax.set_yticklabels( [str(np.cbrt(eval(i.get_text()))) for i in cb.a

给定以下代码

x = np.random.random((50))*2 -1
y = np.random.random((50))
plt.scatter(x,y,c=x**3,cmap='viridis')
cb = plt.colorbar()

#I want a smarter (& working) version of this
cb.ax.set_yticklabels(
    [str(np.cbrt(eval(i.get_text()))) for i in cb.ax.get_yticklabels()]
    ) 
我想用
x**3
来设置散点图中的颜色,强调小尺度上的差异,但我想在颜色栏上显示
x
(而不是
x**3
类似于显示的图中)的值

我相信这可以通过使用反函数(这里是立方根)更改标签来实现。问题是matplotlib通常选择舍入值,而通常不会选择这样的值

您可以使用模块中的

例如:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

x = np.random.random((50))*2 -1
y = np.random.random((50))

plt.scatter(x,y,c=x**3,cmap='viridis',vmin=-1,vmax=1)
cb = plt.colorbar()

def label_cbrt(x,pos):
    return "{:4.2f}".format(np.cbrt(x))

cb.formatter = ticker.FuncFormatter(label_cbrt)
cb.update_ticks()

plt.show()

您可以使用模块中的

例如:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

x = np.random.random((50))*2 -1
y = np.random.random((50))

plt.scatter(x,y,c=x**3,cmap='viridis',vmin=-1,vmax=1)
cb = plt.colorbar()

def label_cbrt(x,pos):
    return "{:4.2f}".format(np.cbrt(x))

cb.formatter = ticker.FuncFormatter(label_cbrt)
cb.update_ticks()

plt.show()