值对散点图的值进行切片时,颜色数组出错 [英] Value Error with color array when slicing values for scatter plot

查看:366
本文介绍了值对散点图的值进行切片时,颜色数组出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想指定在散点图中打印的标记的频率。
在markevery失败后(其他stackoverflow问题:使用markevery的问题)我遵循建议,使用x [:: 5]和y [:: 5]的符号为每个第五个值切分我的值。

I want to specify the frequency of markers that are printed in my scatter plot. After being unsuccessful with markevery (other stackoverflow question: Problems with using markevery) I followed the suggestion to slice my values using the notation of x[::5] and y[::5] for every 5th value.

但是,现在我得到了一个不同的错误。也就是

However, now I get a different error. That is,

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

这是我的代码的简化版本:

Here is a simplified version of my 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()

有人可以给我一个想法犯了一个错误?
任何帮助。谢谢。

Can someone please give me an idea where I made a mistake? Any help is appreciated. Thanks.

推荐答案

您的颜色列表应与您的数据长度相同。因此,您需要应用相同的切片。

Your colour list should be the same length as your data. So you need to apply the same slice.

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

这篇关于值对散点图的值进行切片时,颜色数组出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆