Python 基于使用Seaborn或Matplotlib的两个不同数据帧(具有相同结构)记录的子地块

Python 基于使用Seaborn或Matplotlib的两个不同数据帧(具有相同结构)记录的子地块,python,pandas,matplotlib,seaborn,subplot,Python,Pandas,Matplotlib,Seaborn,Subplot,我有两个数据帧,如下所示。两者都具有相同的结构列名称和索引,但值不同。数据帧1是观察值,数据帧2是预测值。我想用每个表示一列的子图绘制一个图形,Y轴是来自两个数据框的值,两条不同的线,X轴是索引 我知道我应该发布我工作的示例代码,但它们似乎都错了,这就是为什么我不分享我的示例代码。我真的很想使用像seaborn的sns.FaceGrid这样的东西,因为情节质量更高 08FB006 08FC001 08FC003 08FC005 08GD004 ----------------------

我有两个数据帧,如下所示。两者都具有相同的结构列名称和索引,但值不同。数据帧1是观察值,数据帧2是预测值。我想用每个表示一列的子图绘制一个图形,Y轴是来自两个数据框的值,两条不同的线,X轴是索引

我知道我应该发布我工作的示例代码,但它们似乎都错了,这就是为什么我不分享我的示例代码。我真的很想使用像seaborn的sns.FaceGrid这样的东西,因为情节质量更高

    08FB006 08FC001 08FC003 08FC005 08GD004
----------------------------------------------
0   253      872    256      11.80    2660
1   250      850    255      10.60    2510
2   246      850    241      10.30    2130
3   241      827    235      9.32     1970
4   241      821    229      9.17     1900
5   232      819    228      8.93     1840
6   231      818    225      8.05     1710
7   234      817    225      7.90     1610
8   210      817    224      7.60     1590
9   200      816    221      7.53     1590
10  199      810    219      7.41     1550

您可以根据需要修改以下代码-

actual = pd.DataFrame({'a': [5, 8, 9, 6, 7, 2],
                       'b': [89, 22, 44, 6, 44, 1]})
predicted = pd.DataFrame({'a': [7, 2, 13, 18, 20, 2],
                       'b': [9, 20, 4, 16, 40, 11]})

# Creating a tidy-dataframe to input under seaborn
merged = pd.concat([pd.melt(actual), pd.melt(predicted)]).reset_index()
merged['category'] = ''
merged.loc[:len(actual)*2,'category'] = 'actual'
merged.loc[len(actual)*2:,'category'] = 'predicted'

g = sns.FacetGrid(merged, col="category", hue="variable")
g.map(plt.plot, "index", "value", alpha=.7)
g.add_legend();

非常感谢你的回答。我需要类别是列名,而不是数据帧。这就像我想要一个来自实际的和预测的都在同一个子地块中,有一个类别和一条蓝色的线预测为实际的橙色。如果我得到你,那么你应该只交换颜色和色调值,比如g=sns.facetfridmerged,hue=category,col=variable这段代码有效,但是pandas.melt会改变索引。。。我需要将索引保持为x轴-对于每列,应该保留50个索引,但是,此代码将使索引上升到4000,因为它重置了索引,并且不保留原始索引值-您可以检查您的图形,以确定b数据帧索引是否从5到10,这是错误的