使用不同标签按索引绘制

时间:2019-10-15 14:47:07

标签: python python-3.x pandas matplotlib

我正在使用pandas和matplotlib生成一些图表。

我的数据框:

df_groupby_time.plot(kind='bar')

“我的数据框”是来自较大数据框的groupby的结果。我现在想要的是一个简单的条形图,在理论上可以与df_groupby_time.set_index("Journals").plot(kind='bar')配合使用。但是,我得到了:

enter image description here

我想要的是不同的彩色条,以及一个说明哪种颜色与哪种纸张相对应的图例。

enter image description here

到目前为止,玩重贴标签还没有帮助我。而且我对如何实现自己想要的东西一无所知。


编辑:

重置索引和绘图不是我想要的: YYYYMMDD

enter image description here

1 个答案:

答案 0 :(得分:0)

基于这个问题here,我找到了一个解决方案。 因此,数据帧需要转换为矩阵,否则值仅存在于主对角线上。 首先,我将列journals保存在变量中,以备后用。 new_cols = df["Journal"].values

第二,我编写了一个函数,该函数将一个系列,列Papers per year in Journal和先前保存的新列作为输入参数,并返回一个数据框,其中的值仅位于主对角线上。

def values_into_main_diagonal(some_series, new_cols):
    """Puts the values of a series onto the main diagonal of a new df.
       some_series - any series given
       new_cols - the new column labels as list or numpy.ndarray"""
    x = [{i: some_series[i]} for i in range(len(some_series))]
    main_diag_df = pd.DataFrame(x)
    main_diag_df.columns = new_cols
    return main_diag_df

第三,向函数Papers per year in Journal列和我们保存的新列名提供数据,将返回以下数据框:

new_df:

   1_journal  2_journal  3_journal  4_journal  5_journal
0  4          NaN        NaN        NaN        NaN
1  NaN        4          NaN        NaN        NaN
2  NaN        NaN        4          NaN        NaN
3  NaN        NaN        NaN        5          NaN
4  NaN        NaN        NaN        NaN        11

最后通过new_df绘制new_df.plot(kind='bar', stacked=True)给了我我想要的。用不同颜色的日志作为图例,不在轴上: enter image description here