亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Plotly - 如何將行數添加到折線圖上的 Y 軸?

Plotly - 如何將行數添加到折線圖上的 Y 軸?

慕容森 2023-09-05 19:46:58
我正在嘗試創建一個簡單的折線圖,其中 X 軸上包含日期字段,Y 軸上包含行數。我使用以下代碼:import plotly.express as pxdata = {'Project':  ['Project 1', 'Project 2', ' Project 3', 'Project 4', 'Project 5', 'Project 6', 'Project 7', 'Project 8', 'Project 9', 'Project 10'],        'Date': ['10/1/2020', '10/1/2020', '11/1/2020', '12/1/2020', '12/1/2020', '12/1/2020', '2/1/2021', '2/1/2021', '3/1/2021', '4/1/2021']}df2 = pd.DataFrame(data, columns = ['Project','Date'])fig = px.line(df2, x= "Date", y = "Project", title='<b>Project</b>')fig.show()但是,當我這樣做時,項目名稱位于 X 軸上,而不是每個日期的項目計數。有誰知道如何添加行數,以便在折線圖上顯示每個日期的項目數?
查看完整描述

2 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

在發送到繪圖之前,您需要groupby和countpandas 中的行進行比較。另外,您的示例沒有顯示它,但是如果您期望同一個月內有不同的日期并且您只關心年/月,那么您需要在分組之前應用一些舍入(或從日期中提取年和月data['Date'].dt.year,data['Date'].dt.month無論你喜歡哪個)。


取這個稍微不同的樣本,其中添加了 10/2


import plotly.express as px


data = {'Project':  ['Project 1', 'Project 2', ' Project 3', 'Project 4', 'Project 5', 'Project 6', 'Project 7', 'Project 8', 'Project 9', 'Project 10'],

        'Date': ['10/1/2020', '10/2/2020', '11/1/2020', '12/1/2020', '12/2/2020', '12/1/2020', '2/1/2021', '2/1/2021', '3/1/2021', '4/1/2021']}


df2 = pd.DataFrame(data, columns = ['Project','Date'])

df2['Date'] = pd.to_datetime(df2['Date'])


df_grouped = (

    df2.groupby(

        # normalize all dates to start of month

        df2['Date'].astype('datetime64[M]')

    )['Project'].count().rename('Count').to_frame()

)

df_grouped['Names'] = (

    df2.groupby(df2['Date'].astype('datetime64[M]')

    )['Project'].agg(',<br>    '.join)

)


print(df_grouped)


fig = px.line(

    df_grouped, y='Count', title='<b>Projects per month</b>',

    hover_data=['Names']

)

fig.write_html('fig1.html', auto_open=True)

更新:根據要求,此新代碼在懸停時顯示項目名稱。


輸出


            Count                                          Names

Date

2020-10-01      2                    Project 1,<br>    Project 2

2020-11-01      1                                      Project 3

2020-12-01      3  Project 4,<br>    Project 5,<br>    Project 6

2021-02-01      2                    Project 7,<br>    Project 8

2021-03-01      1                                      Project 9

2021-04-01      1                                     Project 10

https://img1.sycdn.imooc.com//64f715640001626a09120439.jpg

查看完整回答
反對 回復 2023-09-05
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

您可以使用Matplotlib 的 hist輕松實現這一點

例子:

from datetime import datetime

import matplotlib

import pandas as pd

from matplotlib.pyplot import hist


df = pd.DataFrame(

? ? {'a': [1, 2, 3, 4]},?

? ? index=[datetime(2020, 9, 24),?

? ? ? ? ? ?datetime(2020, 9, 24),?

? ? ? ? ? ?datetime(2020, 9, 24),?

? ? ? ? ? ?datetime(2020, 9, 25)]

)


hist(df.index)

https://img1.sycdn.imooc.com/64f715790001a76106510350.jpg

不是最漂亮的直方圖,但我相信您可以從這里根據您的需要調整它;)



查看完整回答
反對 回復 2023-09-05
  • 2 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號