2014-02-13 2 views
6

Ich möchte die Häufigkeit der Markierungen angeben, die in meinem Streudiagramm gedruckt werden. Nachdem ich mit malevery (other stackoverflow question: Problems with using markevery) nicht erfolgreich war, folgte ich dem Vorschlag, meine Werte in der Notation von x [:: 5] und y [:: 5] für jeden fünften Wert zu schneiden.Wert Fehler beim Farb-Array beim Schneiden von Werten für das Streudiagramm

Allerdings bekomme ich jetzt einen anderen Fehler. Das heißt,

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 

Hier ist eine vereinfachte Version von meinem Code:

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() 

Kann jemand bitte geben Sie mir eine Idee, wo ich einen Fehler gemacht? Jede Hilfe wird geschätzt. Vielen Dank.

Antwort

12

Ihre Farbliste sollte die gleiche Länge wie Ihre Daten haben. Sie müssen also dasselbe Segment anwenden.

timePlot = ax.scatter(x[::5], y[::5], s=50, c=timeList[::5], 
         marker = marker.next(), edgecolors='none', 
         norm=cNorm, cmap = plt.matplotlib.cm.jet) 
Verwandte Themen