在 Docker 容器中运行时,Plotly 图表格式不同

问题描述 投票:0回答:1

我正在 Streamlit 应用程序中显示 Plotly 图表。当我在本地运行该应用程序时,图表看起来就像我想要的那样。但是,当我在 Docker 容器内部署应用程序时,图表看起来有所不同。有谁知道为什么在 Docker 容器内运行时格式会不同?

这是我在本地 Python 3.9.7 运行应用程序时图表的外观:

这是我在 Docker 容器中运行它时的样子:

有几个区别:

  • 标题字体不同
  • Docker版本中该图占用的面积更广
  • 网格线的颜色不同,并且 Docker 版本中没有垂直网格线
  • 情节背景是不同的颜色
  • Docker 版本中子图之间的垂直空间较小

Docker 容器中似乎没有应用一些额外的样式。有谁知道为什么会这样?


这里是一些用于基本可重现示例的 Python 代码:

import streamlit as st
import plotly.graph_objects as go
from plotly.subplots import make_subplots

# I tried this workaround suggested in another answer, but it didn't help
import plotly.io as pio
pio.templates.default = 'plotly'


fig = make_subplots(rows=2, cols=1)

x_line = [1, 2, 3, 4, 5]
y_line = [10, 12, 8, 15, 7]

x_bar = ['A', 'B', 'C', 'D', 'E']
y_bar = [20, 15, 25, 18, 22]

fig.add_trace(go.Scatter(x=x_line, y=y_line, mode='lines', name='Line Chart'), row=1, col=1)
fig.add_trace(go.Bar(x=x_bar, y=y_bar, name='Bar Chart'), row=2, col=1)
fig.update_layout(title_text='Subplots with Line and Bar Charts', showlegend=True)

st.plotly_chart(fig)

这是我的 Dockerfile:

FROM python:3.9-slim

COPY requirements.txt requirements.txt

# Install your requirements
RUN python -m pip install --upgrade pip
RUN python -m pip install -r requirements.txt

# Copy local app directory into app direcetory in Docker container.
# The example python code above is in `app/app.py`
COPY app app

EXPOSE 8080

CMD ["python", "-m", "streamlit", "run", "app/app.py", "--server.port=8080", "--server.address=0.0.0.0", "--server.enableWebsocketCompression=false"]

需求.txt:

streamlit==1.12.0
plotly==5.18.0
docker plotly streamlit
1个回答
0
投票

我能够通过固定更多软件包版本来解决该问题。具体来说,我必须指定

altair==4.2.2
,这很奇怪,因为我没有在代码中使用 Altair。

我的

requirements.txt
文件现在看起来像这样:

# requirements.txt

streamlit==1.12.0
plotly==5.18.0
altair==4.2.2
© www.soinside.com 2019 - 2024. All rights reserved.