【问题标题】:How to create horizontal bar plot from nominal data?如何从标称数据创建水平条形图?
【发布时间】:2019-07-30 02:38:24
【问题描述】:

我想在 python 中从标称值创建一个水平条形图,但是我无法自己解决它,而且我在 StackOverflow 上没有找到任何好的示例。

我想看看从 1983 年到 2019 年两个季节(持续时间、开始、结束)的年份轮换变化。

我有这个数据框,我想过这样的事情:

DAY            SEASON       YEAR    DAY2
1983-12-27     Wet_Season   1983    27 Dec
1983-12-28     Wet_Season   1983    28 Dec
1983-12-29     Wet_Season   1983    29 Dec
 ....             ....       .....   ....
2019-04-28     Dry_Season   2019    28 Apr 

p = pd.pivot_table(RSDF9, index='YEAR', columns='DAY2', values='SEASON', aggfunc='first')
sns.set_style("white")
fig2, ax2 = p.plot(kind='barh', width=0.85, figsize=(20, 10))

for ax2 in fig2.axes:
    mpl.pyplot.sca(ax2)
    plt.xticks(rotation=45)
    loc = plticker.MultipleLocator(base=18)
    ax2.xaxis.set_major_locator(loc)
    ax2.legend(ncol=2, loc="upper right", frameon=True)

我希望每年都有水平条形图来可视化旱季和雨季的持续时间,但是我不能使用名义数据。

TypeError: Empty 'DataFrame': no numeric data to plot

【问题讨论】:

  • 正确,因此您需要将字符串转换为日期。
  • 这是唯一的错误吗?季节列的字符串类型呢……没关系?
  • 如果你想使用 pandas (df.plot) 也可能是个问题。 Matplotlib (plt.plot(x,y)) 可以解决这个问题,尽管您可能希望将其更改为数值以便能够对其进行排序(干比湿高还是低?)。
  • 好吧,我会用新的知识尝试一下

标签: python pandas matplotlib seaborn


【解决方案1】:

DataMelt project 有几个用 Python/Java 实现的示例,展示了如何制作带有水平误差线的图表。您可以查看this blog,它显示了带有此类图表的示例(+ 代码)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-11
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多