如何用熊猫改变散布图的颜色?

时间:2018-07-26 13:44:36

标签: python matplotlib

我正在尝试通过CSV文件中一列的值为散点图的点着色。我正在使用pandas数据框来处理该文件,并尝试了一个简单的文件,如下所示:

enter image description here

使用此文件,它可以很好地工作,但是当我尝试使用CSV文件进行操作时,这是错误的:

Error: c of shape (31,) not acceptable as a color sequence for x with size 31, y with size 31

这是我用来为点着色的列:

enter image description here

我读取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'

我缺少什么或做错了什么?预先感谢!

1 个答案:

答案 0 :(得分:0)

万一有人需要它!我只是找到了一个解决方案,可能不是最好的,但是它可以工作。我将该列中的所有值与地图中的颜色相关联,然后将其用于“ c”:

 col = df['Causa DDW'].map({'EXC': 'g', 'MOD': 'b', 'DUR': 'r'})