将每列绘制为一行,并使用Python按Dataframe每列的第一行分组

将每列绘制为一行,并使用Python按Dataframe每列的第一行分组,python,pandas,dataframe,matplotlib,plot,Python,Pandas,Dataframe,Matplotlib,Plot,所以我有一个数据框,第一行有8年的能量值和对象类型。我需要绘制所有3000个按类型分组的源。3000行,X轴是8年,Y轴是能量 对不起,如果遗漏了什么,这是我的第一个问题 我尝试只删除类型和绘图,而不按以下方式分组: blazar_eneryg_with_type.plot(x ='Year', kind = 'line') 好的,看到您的原始数据后,您必须先进行一些处理。看起来您正在调用df.plot()。这就是我要做的: # read in your csv df = pd.read_c

所以我有一个数据框,第一行有8年的能量值和对象类型。我需要绘制所有3000个按类型分组的源。3000行,X轴是8年,Y轴是能量

对不起,如果遗漏了什么,这是我的第一个问题

我尝试只删除类型和绘图,而不按以下方式分组:

blazar_eneryg_with_type.plot(x ='Year', kind = 'line')

好的,看到您的原始数据后,您必须先进行一些处理。看起来您正在调用
df.plot()
。这就是我要做的:

# read in your csv
df = pd.read_csv('your_csv')

# drop redundant column
df.drop(columns=['Unnamed: 0'], inplace=True)

#transpose and drop type column and create second df
df1 = df.T.drop(['type1'])

# create color map
colors = {'bcu': 'red', 'bll': 'blue', 'fsrq': 'green'}

# plot colors using mapping from the type column
df1.plot(color=df['type1'].apply(lambda x: colors[x]))
plt.show()
这张图表是一团乱麻,我不知道你为什么要在一张图表上绘制那么多数据,但你就这样做了

编辑:更改图例

ax = df1.plot(color=df['type1'].apply(lambda x: colors[x]))
ax.legend(['bcu', 'bll', 'fsrq'])
plt.show()

你们想要每组的能量总和吗?不,我需要一个图,就像第二张图一样,但只有3种颜色,3种类型对不起,这是数据,我试过你们的代码,它说x和y必须是相同的大小。非常感谢,这是我需要的,只是它显示了每一行的信息,我只需要在信息框中显示颜色和相应的类型,可以吗?