我正在尝试通过CSV文件中一列的值为散点图的点着色。我正在使用pandas数据框来处理该文件,并尝试了一个简单的文件,如下所示:
使用此文件,它可以很好地工作,但是当我尝试使用CSV文件进行操作时,这是错误的:
Error: c of shape (31,) not acceptable as a color sequence for x with size 31, y with size 31
这是我用来为点着色的列:
我读取CSV并将其绘制的功能:
def readCSV(self):
try:
nombre, ok = QtWidgets.QFileDialog.getOpenFileName(self, 'Open file', "*.csv")
if ok:
df = pd.read_csv(nombre, delimiter=";")
#print (df)
ax = self.figure.add_subplot(111)
ax.clear()
df.groupby('Handle').plot(y='Frecuencia Inicial (MHz)', x='TOA (ns)', kind='line', ax=ax, title='Frec VS TOA')
df.groupby('Handle').plot(y='Frecuencia Inicial (MHz)', x='TOA (ns)', kind='scatter', ax=ax, c=df['Causa DDW'])
self.canvas.draw()
except Exception as e:
print("Error:", e)
我也尝试过:
df.groupby('Handle').plot(y='Frecuencia Inicial (MHz)', x='TOA (ns)', kind='scatter', ax=ax, c='Causa DDW')
但是这不起作用,这是错误:
Error: 'str' object has no attribute 'shape'
我缺少什么或做错了什么?预先感谢!
答案 0 :(得分:0)
万一有人需要它!我只是找到了一个解决方案,可能不是最好的,但是它可以工作。我将该列中的所有值与地图中的颜色相关联,然后将其用于“ c”:
col = df['Causa DDW'].map({'EXC': 'g', 'MOD': 'b', 'DUR': 'r'})