Python matplotlib pyplot颜色条问题

Python matplotlib pyplot颜色条问题,python,matplotlib,Python,Matplotlib,亲爱的各位,我正在尝试使用相关颜色栏执行散点图。我希望colorbar具有字符串值而不是数字值,因为我正在比较两个不同的数据集,每个数据集具有不同的ColorValue(但在任何情况下都介于最大值和最小值之间)。这是我正在使用的代码 import matplotlib.pyplot as plt import numpy as np from numpy import * from matplotlib import rc import pylab from pylab import * fro

亲爱的各位,我正在尝试使用相关颜色栏执行散点图。我希望colorbar具有字符串值而不是数字值,因为我正在比较两个不同的数据集,每个数据集具有不同的ColorValue(但在任何情况下都介于最大值和最小值之间)。这是我正在使用的代码

import matplotlib.pyplot as plt
import numpy as np
from numpy import *
from matplotlib import rc
import pylab
from pylab import *
from matplotlib import mpl
data   = np.loadtxt('deltaBinned.txt')
data2  = np.loadtxt('deltaHalphaBinned.txt')
fig=plt.figure()
fig.subplots_adjust(bottom=0.1)
ax=fig.add_subplot(111)
plt.xlabel(r'$\partial \Delta/\partial\Phi[$mm$/^{\circ}]$',fontsize=16)
plt.ylabel(r'$\Delta$ [mm]',fontsize=16)
plt.scatter(data[:,0],data[:,1],marker='o',c=data[:,3],s=data[:,3]*1500,cmap=cm.Spectral,vmin=min(data[:,3]),vmax=max(data[:,3]))
plt.scatter(data2[:,0],data2[:,1],marker='^',c=data2[:,2],s=data2[:,2]*500,cmap=cm.Spectral,vmin=min(data2[:,2]),vmax=max(data2[:,2]))
cbar=plt.colorbar(ticks=[min(data2[:,2]),max(data2[:,2])])
cbar.set_ticks(['Low','High'])
cbar.set_label(r'PdF')
plt.show()
不幸的是,它不起作用,因为cbar.set_ticks不接受字符串值。我读过这本书 但我无法使它适应我的情况。如果问题很简单,我很抱歉,但我刚刚开始python编程 尼古拉

比如说,

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

data = np.random.random((10, 4))
data2 = np.random.random((10, 4))
plt.subplots_adjust(bottom = 0.1)
plt.xlabel(r'$\partial \Delta/\partial\Phi[$mm$/^{\circ}]$', fontsize = 16)
plt.ylabel(r'$\Delta$ [mm]', fontsize = 16)
plt.scatter(
    data[:, 0], data[:, 1], marker = 'o', c = data[:, 3], s = data[:, 3]*1500,
    cmap = cm.Spectral, vmin = min(data[:, 3]), vmax = max(data[:, 3]))
plt.scatter(
    data2[:, 0], data2[:, 1], marker = '^', c = data2[:, 2], s = data2[:, 2]*500,
    cmap = cm.Spectral, vmin = min(data2[:, 2]), vmax = max(data2[:, 2]))
cbar = plt.colorbar(ticks = [min(data2[:, 2]), max(data2[:, 2])])
cbar.ax.set_yticklabels(['Low', 'High'])
cbar.set_label(r'PdF')
plt.show()
产生

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

data = np.random.random((10, 4))
data2 = np.random.random((10, 4))
plt.subplots_adjust(bottom = 0.1)
plt.xlabel(r'$\partial \Delta/\partial\Phi[$mm$/^{\circ}]$', fontsize = 16)
plt.ylabel(r'$\Delta$ [mm]', fontsize = 16)
plt.scatter(
    data[:, 0], data[:, 1], marker = 'o', c = data[:, 3], s = data[:, 3]*1500,
    cmap = cm.Spectral, vmin = min(data[:, 3]), vmax = max(data[:, 3]))
plt.scatter(
    data2[:, 0], data2[:, 1], marker = '^', c = data2[:, 2], s = data2[:, 2]*500,
    cmap = cm.Spectral, vmin = min(data2[:, 2]), vmax = max(data2[:, 2]))
cbar = plt.colorbar(ticks = [min(data2[:, 2]), max(data2[:, 2])])
cbar.ax.set_yticklabels(['Low', 'High'])
cbar.set_label(r'PdF')
plt.show()