Plotly 中的完整字符串 x 轴标签
Posted
技术标签:
【中文标题】Plotly 中的完整字符串 x 轴标签【英文标题】:Full String x-axis labels in Plotly 【发布时间】:2021-07-16 04:26:16 【问题描述】:在 Plotly 中,我试图显示漂亮的 x 轴
df["yearweek"]
中的值是一年中的第几周:202101 , 202102, ...
但在图像中显示的格式很奇怪
有没有办法以原始形式按原样显示?
fig = make_subplots(rows=2, cols=2,
subplot_titles=("Total Job DB Bytes","Average Job DB Bytes","Total Job DB Calls","Average Job DB Calls"))
fig.add_trace(go.Scatter(x=df["yearweek"], y=df["total_db_size"]), row=1, col=1)
fig.add_trace(go.Scatter(x=df["yearweek"], y=df["size_by_jobs"]), row=1, col=2)
fig.add_trace(go.Scatter(x=df["yearweek"], y=df["total_db_calls"]),row=2, col=1)
fig.add_trace(go.Scatter(x=df["yearweek"], y=df["calls_by_jobs"]), row=2, col=2)
fig.update_xaxes(tickmode="linear", row=1, col=1)
fig.update_xaxes(tickmode="linear", row=1, col=2)
fig.update_xaxes(tickmode="linear", row=2, col=1)
fig.update_xaxes(tickmode="linear", row=2, col=2)
fig.update_layout(height=800, width=1000, xaxis = 'type' : 'category', showlegend=False)
fig.show()
编辑:这是完整的 2x2 子图布局。包括下面vestland 建议的类型更改。 这显示了仅适用于第一个图的布局以及该图的 x 轴更改顺序。
【问题讨论】:
【参考方案1】:有没有办法以原始形式按原样显示
fig.update_layout(xaxis = 'type' : 'category')
# imports
import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
# data
df = pd.DataFrame('yearweek':[202101 , 202102, 202103],
'my_value':[1,2, 4])
# plotly
fig = go.Figure()
fig.add_trace(go.Scatter(x=df["yearweek"], y=df["my_value"]))
# plotly x-axis type / format
fig.update_layout(xaxis = 'type' : 'category')
【讨论】:
非常感谢!这几乎可行,但它仅适用于我在第一个 1,1 位置的图,并且我的设置实际上有 4 个子图(所以在 1,2 2,1 和 2,2 a 处绘制)。再加上它颠倒了 X 轴上数据的顺序,所以图 1 上的值是关闭的 - 让我在上面发布更新 @Ro.不客气!关于but it only applies to my plot at first 1,1 position...
,我不倾向于为您重现您的完整问题。因此,我的建议仅针对您的核心问题,以获取最小的可重复示例。你没有提供。您也没有提供适当的数据样本。所以下一次,请考虑一次只关注 一个 问题,并根据 *** 指南提供一个完全可运行的代码 sn-p 和数据样本。【参考方案2】:
多亏了vestland 的回复,我才得以解决。我在每个单元格上都需要 type='category', categoryorder='category ascending' ,如下所示:
fig = make_subplots(rows=2, cols=2,
subplot_titles=("Total Job DB Bytes","Average Job DB Bytes","Total Job DB Calls","Average Job DB Calls"))
fig.add_trace(go.Scatter(x=df["yearweek"], y=df["total_db_size"]), row=1, col=1)
fig.add_trace(go.Scatter(x=df["yearweek"], y=df["size_by_jobs"]), row=1, col=2)
fig.add_trace(go.Scatter(x=df["yearweek"], y=df["total_db_calls"]),row=2, col=1)
fig.add_trace(go.Scatter(x=df["yearweek"], y=df["calls_by_jobs"]), row=2, col=2)
fig.update_xaxes(tickmode="linear", type='category', categoryorder='category ascending', row=1, col=1)
fig.update_xaxes(tickmode="linear", type='category', categoryorder='category ascending', row=1, col=2)
fig.update_xaxes(tickmode="linear", type='category', categoryorder='category ascending', row=2, col=1)
fig.update_xaxes(tickmode="linear", type='category', categoryorder='category ascending', row=2, col=2)
fig.update_layout(height=800, width=1000, showlegend=False)
fig.show()
【讨论】:
以上是关于Plotly 中的完整字符串 x 轴标签的主要内容,如果未能解决你的问题,请参考以下文章