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 轴标签的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Plotly 删除堆叠和分组条形图中的 x 轴刻度标签

情节时间序列中的多个X轴

在 R plotly 子图上获取单独的轴标签

在 plotly.js 中向 y 轴标签添加一个单位

轴标签/标题没有出现 plotly.js

R plotly - 显示不同的标签