簡體   English   中英

Plotly:如何在堆疊漏斗 plot 中處理不同的文本大小?

[英]Plotly: How to handle varying text sizes in a stacked funnel plot?

我正在嘗試制作活動的堆疊漏斗 plot。 plot 上的標簽未按預期顯示。

首先我的代碼:

import pandas as pd
import plotly.express as px

stages = ["Initial Landing", "Step 2", "Step 3", "Added to cart", "Purchased"]
regiona_plotly = pd.DataFrame(dict(number=[10866,10543,1067,1032,108], stage=stages))
regionb_plotly = pd.DataFrame(dict(number=[10650,10432,1076,1036,1012], stage=stages))
regiona_plotly['region'] = "Region A"
regionb_plotly['region'] = "Region B"
df = pd.concat([regiona_plotly, regionb_plotly], axis=0)
fig = px.funnel(df, x='number', y='stage', color='region')
fig.update_traces(textposition='auto')
fig.update_layout(autosize=True)
fig.write_image("region_funnel.png")

(幾乎完全取自plotly 文檔

此代碼生成如下圖像: Plotly - 自動文本位置

請注意,在“第 3 步”、“已添加到購物車”和“已購買”中,區域 A 的文本被縮放得非常小並且在條內,但區域 B 在外面。

我嘗試更新這一行:

fig.update_traces(textposition='outside')

但是,有了這個,我得到兩個值在漏斗的 B 區重疊。 此外,文本超出了上部頻帶的 plot 之外。

Plotly - 外部文本位置

我怎樣才能讓文本大小相同,並且如果它適合大小,或者在外面和正確的一側,如果它不適合,那么它要么在條內?

簡短的回答:

這似乎是一個錯誤。 如果您需要的是圖形的.png圖像,請運行:

import plotly
plotly.offline.plot(fig, filename='funnel.html')

然后使用用戶界面相機圖標生成.png版本:

在此處輸入圖像描述

結果:

在此處輸入圖像描述


細節:

這是一個奇怪的問題。 並且很可能是 plotly 社區論壇感興趣的錯誤。 我有一個解決方法。 假設您實際上想要在這里結束的是 plot 的.png圖像文件。

如果您在 JupyterLab 中運行您的確切代碼,但僅將fig.write_image("region_funnel.png")行與fig.show()交換,您將得到:

在此處輸入圖像描述

那里沒有小文字,如果我理解正確? 一個不改變文本大小的圖形會是一個令人滿意的解決方案嗎? 但是fig.show()創建的是 html object,而不是.png圖像。 所以我測試了fig.write_image()的可用 output 選項,它們是:

  • 'PNG'
  • 'jpg' 或'jpeg'
  • 'webp'
  • 'svg'
  • 'pdf'
  • 'eps'(需要安裝 poppler 庫)

我排除了webpeps作為可行的解決方案,並測試了其中的 rest。 並且每一個都產生了相同的未分類的不同文本大小。 即使在 JupyterLab 中使用fig.show()生成圖形,然后使用用戶界面相機圖標手動下載文件,也會產生完全相同的結果,即使html 版本看起來不錯。

但是如果你運行:

import plotly
plotly.offline.plot(fig, filename='funnel.html')

然后下載一個.png版本,你會得到這個:

在此處輸入圖像描述

如果我理解正確,這對你來說應該是一個可行的選擇。 誠然,這遠不是一個完美的答案,但我希望你會發現它同樣有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM