【问题标题】:how to label axis with all the row names from dataframe如何用数据框中的所有行名标记轴
【发布时间】:2016-02-19 05:19:26
【问题描述】:

我的数据框包含大约 430 行:

     name         Right_Answers  Wrong_Answers
    Alice Ji      7                6
    Eleonora LI   2                5
    Mike The      6                5
    Helen Wo      5                3

为了可视化正确(红色)和错误(蓝色)答案的数量,我正在使用具有以下功能的 matplotlib 库:

g=df.plot(x='name', color=['b','r'], figsize=(100,50))  
ax.xaxis.set_major_locator(MultipleLocator(0.1))
labels = df.name.values[:]
ax = plt.gca()
ax.set_xticklabels(labels, rotation=90)

但我在 X 轴上始终只有 8 个名称作为标签,而不是 430 个(垂直旋转,因此有足够的空间容纳更多行名称)!为什么会发生?我认为这种方法将所有行名放在轴上 labels = df.name.values[:] 但显然不是。 你知道这个问题的其他解决方案吗? 我已经准备好尝试使用 seaborn 或 ggplot 等其他库,即使与 matplotlib 相比,我发现它们对数据框不太适应

【问题讨论】:

    标签: python pandas matplotlib plot axis-labels


    【解决方案1】:

    假设您的数据在数据框中,您可以使用 Pandas 的内置绘图方法,例如:

    df.plot(kind='bar', color=['red', 'blue'])
    

    【讨论】:

    • 谢谢,当我精确 kind='bar 时它可以工作,但我很奇怪为什么当我不精​​确这个参数并且我想要线条而不是条形图时,相同的熊猫绘图功能不t 将所有行名作为标签放在轴上? (但仍然绘制漂亮的线图)
    【解决方案2】:

    试试这个(iPython 笔记本):

    import pandas as pd
    import matplotlib.pyplot as plt
    
    %pylab inline
    mydata = [{'Name':'John', 'TRUE_ANSWER': 75, 'FALSE_ANSWER':25},
              {'Name':'Mike', 'TRUE_ANSWER': 60, 'FALSE_ANSWER':40},]
    df = pd.DataFrame(mydata)
    columns = ['Name','TRUE_ANSWER', 'FALSE_ANSWER']
    df = df[columns]
    df.index=df["Name"]
    df.plot(kind='bar')
    

    我认为尝试制作您在问题plotting & formatting seaborn chart from pandas dataframe 中询问我的累积图表将不适用于您的设置。希望这会有所帮助。

    【讨论】:

    • 谢谢!我赞成你的回答,但我将第一个标记为正确,对我来说是工作的原因,它似乎更短,虽然更漂亮!我不想要累积图表,而只想要折线图,事实证明,如果不精确 kind='bar' 它不会将所有名称绘制为 x 轴的标签,并且仅从 430 绘制 8。但它适用于 @987654326 @ ,我仍在寻找绘制折线图的解决方案,并将所有行名作为 X 轴的标签
    猜你喜欢
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2019-10-24
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多