我正在使用pandas和matplotlib生成一些图表。
我的数据框:
df_groupby_time.plot(kind='bar')
“我的数据框”是来自较大数据框的groupby的结果。我现在想要的是一个简单的条形图,在理论上可以与df_groupby_time.set_index("Journals").plot(kind='bar')
配合使用。但是,我得到了:
我想要的是不同的彩色条,以及一个说明哪种颜色与哪种纸张相对应的图例。
到目前为止,玩重贴标签还没有帮助我。而且我对如何实现自己想要的东西一无所知。
编辑:
重置索引和绘图不是我想要的:
YYYYMMDD
答案 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)
给了我我想要的。用不同颜色的日志作为图例,不在轴上: