Plotly:如何处理堆叠漏斗图中不同的文本大小?
Plotly: How to handle varying text sizes in a stacked funnel 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 documents)
此代码生成如下图像:
请注意,在“第 3 步”、“已添加到购物车”和“已购买”中,区域 A 的文本缩放得非常小并位于栏内,但区域 B 位于栏外。
我尝试更新这一行:
fig.update_traces(textposition='outside')
但是,有了这个,我得到了漏斗区域 B 侧的两个值重叠。此外,文本超出了上部波段的情节。
如何使文本大小相同,如果适合该大小则在栏内,如果不适合则在栏外和正确的一侧?
简答:
这似乎是一个错误。如果您需要 .png
您的身材图片,运行:
import plotly
plotly.offline.plot(fig, filename='funnel.html')
然后使用用户界面相机图标生成 .png
版本:
结果:
详情:
这很奇怪。并且很可能是 plotly 社区论坛感兴趣的错误。我有一个解决方法。假设你实际上想要在这里结束的是你的情节的 .png
图像文件。
如果您 运行 您在 JupyterLab 中的确切代码,但将行 fig.write_image("region_funnel.png")
替换为 fig.show()
,您将得到:
那里没有小文字!如果我理解正确,没有改变文字大小的数字将是一个令人满意的解决方案?但是 fig.show()
创建了一个 html 对象,而不是 .png
图像。所以我测试了 fig.write_image()
的可用输出选项,它们是:
- 'png'
- 'jpg' 或 'jpeg'
- 'webp'
- 'svg'
- 'pdf'
- 'eps'(需要安装poppler库)
我排除了 webp
和 eps
作为可行的解决方案,并测试了其余的解决方案。每个人都产生了相同的、不需要的、不同大小的文本。即使在 JupyterLab 中使用 fig.show()
生成图形,然后使用用户界面相机图标手动下载文件也会产生完全相同的结果 即使 html 版本看起来不错.
但是如果你运行:
import plotly
plotly.offline.plot(fig, filename='funnel.html')
然后然后下载一个.png
版本你会得到这个:
如果我理解正确的话,这对你来说应该是一个可行的选择。诚然,这远不是一个完美的答案,但我希望你会发现它仍然有用。
我正在尝试生成活动的堆积漏斗图。标签未按预期出现在图中。
首先是我的代码:
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 documents)
此代码生成如下图像:
请注意,在“第 3 步”、“已添加到购物车”和“已购买”中,区域 A 的文本缩放得非常小并位于栏内,但区域 B 位于栏外。
我尝试更新这一行:
fig.update_traces(textposition='outside')
但是,有了这个,我得到了漏斗区域 B 侧的两个值重叠。此外,文本超出了上部波段的情节。
如何使文本大小相同,如果适合该大小则在栏内,如果不适合则在栏外和正确的一侧?
简答:
这似乎是一个错误。如果您需要 .png
您的身材图片,运行:
import plotly
plotly.offline.plot(fig, filename='funnel.html')
然后使用用户界面相机图标生成 .png
版本:
结果:
详情:
这很奇怪。并且很可能是 plotly 社区论坛感兴趣的错误。我有一个解决方法。假设你实际上想要在这里结束的是你的情节的 .png
图像文件。
如果您 运行 您在 JupyterLab 中的确切代码,但将行 fig.write_image("region_funnel.png")
替换为 fig.show()
,您将得到:
那里没有小文字!如果我理解正确,没有改变文字大小的数字将是一个令人满意的解决方案?但是 fig.show()
创建了一个 html 对象,而不是 .png
图像。所以我测试了 fig.write_image()
的可用输出选项,它们是:
- 'png'
- 'jpg' 或 'jpeg'
- 'webp'
- 'svg'
- 'pdf'
- 'eps'(需要安装poppler库)
我排除了 webp
和 eps
作为可行的解决方案,并测试了其余的解决方案。每个人都产生了相同的、不需要的、不同大小的文本。即使在 JupyterLab 中使用 fig.show()
生成图形,然后使用用户界面相机图标手动下载文件也会产生完全相同的结果 即使 html 版本看起来不错.
但是如果你运行:
import plotly
plotly.offline.plot(fig, filename='funnel.html')
然后然后下载一个.png
版本你会得到这个:
如果我理解正确的话,这对你来说应该是一个可行的选择。诚然,这远不是一个完美的答案,但我希望你会发现它仍然有用。