我想指定散点图中打印的标记的频率。在markevery不成功之后,我按照建议对每第5个值使用x [:: 5]和y [:: 5]表示法对值进行切片。
但是,现在我得到了另一个错误。那是,
Traceback (most recent call last): File "C:\Users\mkupfer\NASA_SJSU_UARC_work\Info\CodingExamples\PythonExamples\X-Y-Value_Plot_Z-SimTime_02_noSectors.py", line 26, in <module> timePlot = ax.scatter(x[::5], y[::5], s=50, c=timeList, marker = marker.next(), edgecolors='none', norm=cNorm, cmap = plt.matplotlib.cm.jet) #cm.Spectral_r File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 5715, in scatter colors = mcolors.colorConverter.to_rgba_array(c, alpha) File "C:\Python27\lib\site-packages\matplotlib\colors.py", line 380, in to_rgba_array raise ValueError("Color array must be two-dimensional") ValueError: Color array must be two-dimensional
这是我的代码的简化版本:
import numpy as np import matplotlib.pyplot as plt import matplotlib.colors as colors import matplotlib.lines as lines from matplotlib import cm import csv import itertools import random #callSignList = [AMF2052,AMF2052,AMF2052,AMF2052,AMF2052] xList = random.sample(xrange(100), 100) yList = random.sample(xrange(100), 100) timeList = random.sample(xrange(100), 100) #prepare the plot fig = plt.figure(figsize=(18,13)) ax = fig.add_subplot(111) cNorm = plt.matplotlib.colors.Normalize(vmin=0, vmax=3600) marker = itertools.cycle(('o', '^', '+', '8', 's', 'p', 'x')) x = xList y = yList timePlot = ax.scatter(x[::5], y[::5], s=50, c=timeList, marker = marker.next(), edgecolors='none', norm=cNorm, cmap = plt.matplotlib.cm.jet) #cm.Spectral_r fig.subplots_adjust(top=0.90, bottom=0.15, hspace=0.25,) # Now adding the colorbar #fig.colorbar(timePlot, shrink=0.5, aspect=10, orientation="horizontal") cax = fig.add_axes([0.15, 0.06, 0.7, 0.05]) #The numbers in the square brackets of add_axes refer to [left, bottom, width, height], #where the coordinates are just fractions that go from 0 to 1 of the plotting area. #ax.colorbar(timePlot) cbar = fig.colorbar(timePlot, cax, orientation='horizontal') cbar.set_label('Relative Simulation Time') plt.show()
有人可以告诉我我犯错了吗?任何帮助表示赞赏。谢谢。
颜色列表的长度应与数据长度相同。因此,您需要应用相同的切片。
timePlot = ax.scatter(x[::5], y[::5], s=50, c=timeList[::5], marker = marker.next(), edgecolors='none', norm=cNorm, cmap = plt.matplotlib.cm.jet)