第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 matplotlib 創(chuàng)建帶有 timedeltas 的堆疊條形圖?

如何使用 matplotlib 創(chuàng)建帶有 timedeltas 的堆疊條形圖?

婷婷同學(xué)_ 2022-10-25 16:09:47
剛剛開始使用 pandas 進行數(shù)據(jù)可視化。目前,我嘗試使用 matplotlib 可視化一個 pd,如下所示:              Initiative_160608 Initiative_160570 Initiative_160056  Beschluss_BR         2009-05-15        2009-05-15        2006-04-07   Vorlage_BT           2009-05-22        2009-05-22        2006-04-26   Beratung_BT          2009-05-28        2009-05-28        2006-05-11   ABeschluss_BT        2009-06-17        2009-06-17        2006-05-17   Beschlussempf        2009-06-17        2009-06-17        2006-05-26   如您所見,我有許多列,其中包含五個不同的日期(每個日期都象征著五個事件鏈中的一個事件)?,F(xiàn)在解決問題:我的計劃是使用 5 個不同事件之間的時間增量(第一個事件和最后一個事件之間經(jīng)過了多少天,包括其間的日期),使用堆疊的水平圖表來可視化顯示的數(shù)據(jù)。每列應(yīng)代表圖表中的一個條形。整個圖表不是關(guān)于已經(jīng)過去的絕對時間,而是關(guān)于五個事件的持續(xù)時間相對于一列的總持續(xù)時間,這意味著所有條的總長度應(yīng)該相同。但是我還沒有找到任何類似的東西,也沒有自己找到解決方案。我將非常感謝任何類型的解決方案來處理顯示的數(shù)據(jù)。
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻1801條經(jīng)驗 獲得超8個贊

我不確定這是否是您要查找的內(nèi)容,但是如果每列都應(yīng)該是條形,并且您希望每列中的時間增量,那么您需要每行之間的天數(shù)差異,我是猜測第一行應(yīng)該有0天的差異(因為它是起點)。


同樣對于堆疊條形圖,索引用于創(chuàng)建類別,但在您的情況下,您希望列作為類別,并且每個條形圖由不同的索引值組成。這意味著您最終需要轉(zhuǎn)置您的 df 。


這個解決方案非常丑陋,但希望它有所幫助。


import numpy as np

import pandas as pd

import matplotlib.pyplot as plt


df = pd.DataFrame({

    "Initiative_160608": ['2009-05-15', '2009-05-22', '2009-05-28', '2009-06-17', '2009-06-17'],

    "Initiative_160570": ['2009-05-15', '2009-05-22', '2009-05-28', '2009-06-17', '2009-06-17'],

    "Initiative_160056": ['2006-04-07', '2006-04-26', '2006-05-11', '2006-05-17', '2006-05-26']})

df.index = ['Beschless_BR', 'Vorlage_BT', 'Beratung_BT', 'ABeschless_BT', 'Beschlussempf']


# convert everything to dates

df = df.apply(lambda x: pd.to_datetime(x, format="%Y-%m-%d"))


def get_days(x):

    diff_list = []

    for i in range(len(x)):

        if i == 0:

            diff_list.append(x[i] - x[i])

        else:

            diff_list.append(x[i] - x[i-1])

    return diff_list

# get the difference in days, then convert back to numbers

df_diff = df.apply(lambda x: get_days(x), axis = 0) 

df_diff = df_diff.apply(lambda x: x.dt.days)

# transpose the matrix so that each initiative becomes a stacked bar

df_diff = df_diff.transpose()

# replace 0 values with 0.2 so that the bars are visible

df_diff = df_diff.replace(0, 0.2)

df_diff.plot.bar(stacked = True)

plt.show()

http://img1.sycdn.imooc.com//635799e90001af7705870448.jpg

查看完整回答
反對 回復(fù) 2022-10-25
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號