如何使用 plotly 显示这样的图表 [关闭]
Posted
技术标签:
【中文标题】如何使用 plotly 显示这样的图表 [关闭]【英文标题】:How to display such a graph using plotly [closed] 【发布时间】:2021-11-22 20:10:18 【问题描述】:I have a dataset like this
i want to display a graph like this using plotly (dash)
【问题讨论】:
数据作为文本 - 它是一个堆叠条 @RobRaymond 数据可以用 OCR 转换 :) 但是,@Sohibjon,您应该将数据作为文本包含在内,以便我们可以更轻松地回答。此外,您应该直接在您的问题中添加图片以获得更好的答案。 【参考方案1】: 您作为图像的数据意味着它不能用于答案。大部分代码都在生成具有代表性的样本数据集 这是一个直截了当的条形图。已设置 dtick,因此 xaxis 中的每个值都有一个标签。已重新定位图例import numpy as np
import random
import pandas as pd
import plotly.express as px
ROWS = 24
careers = [
"Director",
"Accountant",
"Programmer",
"Technician",
"Office Manager",
"Designer",
]
df = pd.DataFrame(
c: a[1][np.where(a[0] >= 0)[0][0] : np.where(a[0] == 0)[0][0] + ROWS]
for c, a in zip(
careers,
[
np.unique(
np.random.normal(
ROWS / 2, (ROWS / 2) / 2.33, random.randint(500, 1000)
).astype(int),
return_counts=True,
)
for _ in careers
],
)
)
px.bar(df, y=df.columns).update_layout(
xaxis="dtick": 1, "title":"",
yaxis="title":"",
legend="yanchor": "bottom", "xanchor": "left", "x": 0, "y": -.2, "orientation": "h", "title":"",
)
【讨论】:
【参考方案2】:您可以使用 Plotly Express bar
图表。但是您首先必须将数据框从宽格式转换为长格式。
你的数据有一个完整的例子:
from io import StringIO
import pandas as pd
import plotly.express as px
data = """Director,Accountant,Foo,Texawaka,MeHenokep,Wed nosap,Programmer,Cy-wed
0,0,90,19,5,2,0,0
0,0,84,19,7,2,0,1
0,0,84,19,9,4,0,1
0,0,90,19,9,5,0,1
0,0,92,19,9,6,0,1
0,0,92,19,9,41,0,1
0,0,138,81,11,47,0,1
0,17,338,237,20,57,0,4
1,155,412,272,52,116,0,5
6,156,454,282,51,121,1,20
15,156,506,307,53,122,10,42
19,156,581,310,59,123,13,77
20,156,612,311,61,123,16,78
20,156,624,314,60,123,16,78
20,133,660,359,59,123,16,78
19,128,703,398,59,123,16,78
19,127,713,398,59,117,16,78
19,119,561,315,59,103,16,78
17,10,533,249,59,93,15,78
16,1,500,212,58,85,13,78
6,1,467,192,58,81,9,72
1,0,404,171,50,38,4,13
0,0,365,171,37,19,2,6
0,0,357,171,30,9,1,4
"""
# Create pandas.DataFrame
df = pd.read_csv(StringIO(data), sep=",").reset_index()
# Convert DataFrame from wide to long format
df_long = pd.melt(df, id_vars="index", var_name='position', value_name='value')
# Plot
fig = px.bar(df_long, x="index", y="value", color="position")
fig.show()
【讨论】:
以上是关于如何使用 plotly 显示这样的图表 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JS 客户端上正确显示使用 Python Plotly 在服务器上创建的图表?