matplotlib plot 在 streamlit 中的分辨率很差

Posted

技术标签:

【中文标题】matplotlib plot 在 streamlit 中的分辨率很差【英文标题】:matplotlib plot has bad resolution in streamlit 【发布时间】:2020-03-25 01:25:05 【问题描述】:

在流线型应用程序中,当尝试使用与标准格式不同的格式绘制图形时,我得到的分辨率非常差。

例子:

import pandas as pd
import numpy as np
import streamlit as st

index = pd.date_range(start='2019-01-01', periods=31)
data = np.random.randint(0,100,size=(len(index)))
df = pd.DataFrame(index=index, data=data)
df.plot(figsize=(25, 5), antialiased=True)
st.pyplot(dpi=100)

结果如下:

具有相同 figsize 的 jupyter notebook 中的相同绘图没有此问题。 为什么会发生这种情况,我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

我正在复制并粘贴您收到的以下问题的response from the Streamlit Forum:

“嘿@mjspier - 感谢您查看 Streamlit!

figsize 参数值以英寸为单位,因此在这种情况下,您将生成一个预期为 25 英寸宽的图像。然后,Streamlit 将该图像缩小到 Streamlit 的最大可显示宽度,大约为 1500 像素,因此会出现模糊。

一个简单的解决方法是传递一个小的 figsize。 (figsize 中的每英寸约为 1000 像素,因此 (15, 3) 的 figsize 看起来不那么模糊。)

我还为此打开了一个错误,这样我们至少可以做一些比在 figsize 非常大时显示丑陋图像少出乎意料的事情。”

希望这会有所帮助!

【讨论】:

以上是关于matplotlib plot 在 streamlit 中的分辨率很差的主要内容,如果未能解决你的问题,请参考以下文章

为啥 matplotlib 需要在 plt.scatter() 之前设置日志比例而不是 plt.plot()?

Matplotlib.pyplot.plot 绘图

Matplotlib - plot_surface : 获取写在右下角的 x,y,z 值

python matplotlib.plot画图显示中文乱码的问题

python matplotlib的plot.show怎么自动关闭

python使用matplotlib可视化线图(line plot)并为可视化图像添加图例(legend)信息(add legend to matplotlib plot)