【问题标题】:Pandas dataframe lineplot and stacked bar plot熊猫数据框线图和堆积条形图
【发布时间】:2018-08-14 11:49:03
【问题描述】:

情况: 我有一个非常小的数据集,其中包含年份列和指示二进制列的事件成功或失败。

我从计算成功和失败事件的二进制列创建了两个系列。

成功的事件:

success_count = hungary_data[hungary_data['success']==1]["iyear"].value_counts().sort_index()
success_count

输出:

失败的事件:

fail_count = hungary_data[hungary_data['success']==0]["iyear"].value_counts().sort_index()
fail_count


输出:

问题: 我的问题是我不能在折线图上显示这两个系列,也不能在堆积条形图上显示。

这是我的折线图代码和输出:

plt.plot(success_count, label = "Sikeres támadások")
plt.plot(fail_count, label = "Sikertelen támadások")
plt.ylim(ymin=0)
plt.legend(loc=2)
plt.show()


输出:


如您所见,失败的计数根本不显示(但是有一个图例),年份以一半的增量显示(这也是错误的)。

我的堆叠条尝试也失败了:

plt.bar([1989,1990,1991], success_count, label = "Sikeres támadások")
plt.bar([1989,1990,1991], fail_count, label = "Sikertelen támadások")
plt.legend(loc=2)
plt.show()


输出:

问题:

  1. 我的代码应该如何显示成功和失败事件的折线图(如果一年内没有失败尝试,它应该为零)?
  2. 为什么年份显示为半增量(年份不应该有小数),有什么解决方案可以避免这种情况?
  3. 如果出现堆叠条,我的代码应该是什么样子?

提前感谢您的帮助!

【问题讨论】:

  • 在您的第一个图中,您只有一个 fail_count 的数据点,即 (1991, 1)。因此,除非您使用可见标记,否则它在绘图上不可见。在第一个情节中,您可以尝试同时使用标记和线条来突出显示数据点。为了避免半整数,一种方法是手动将xticks 设置为plt.xticks(range(1989,1993))
  • Sandeep Kadapa,我正在尽力坚持你提到的例子。拜托,请指出我的帖子有什么问题。问题是可重现的,我坚持使用最少的代码并且它是完整的。这个帖子到底有什么问题?请告诉我。我把那个链接读了 50 遍。您能否也坚持您的评论是最少的、完整的和可验证的?就像让我知道哪个部分不符合规则......谢谢你......所以......很多!
  • 图片总是一个坏主意。你有代码。你为什么不复制你的代码?发布代码图片就像尝试喝一杯牛奶的图片。
  • 为什么只在未来?为什么不是现在?为什么不把这个问题的图片换成代码呢?

标签: python pandas dataframe matplotlib plot


【解决方案1】:

试试下面的。

首先,重命名您的success_countfail_count 系列:

success_count.rename('Sikeres támadások', inplace=True)
fail_count.rename('Sikertelen támadások', inplace=True)

那么你可以只绘制两者中的concat

pd.concat([success_count, fail_count],axis=1).plot(kind='bar', stacked='True')

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 2019-04-17
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 2015-06-28
    相关资源
    最近更新 更多