标签: streamlit

如何使按钮居中并着色

我有一个应用程序可以将图像转换为铅笔素描,在该应用程序中我需要对按钮进行三处更改

  1. 需要将两个按钮对齐到中心
  2. 需要给按钮一些颜色
  3. 两个按钮的大小应该相同

示例代码:

    import streamlit as st #web app and camera
    import numpy as np # for image processing 
    from PIL import Image #Image processing 

    import cv2 #computer vision 

def dodgeV2(x, y):
            return cv2.divide(x, 255 - y, scale=256)
        
def pencilsketch(inp_img):
            img_gray = cv2.cvtColor(inp_img, cv2.COLOR_BGR2GRAY)
            img_invert = cv2.bitwise_not(img_gray)
            img_smoothing = cv2.GaussianBlur(img_invert, (21, 21),sigmaX=0, sigmaY=0)
            final_img = dodgeV2(img_gray, img_smoothing)
            return(final_img)
        
def download_image(x):
    with open(x, "rb") as file:
                        btn = st.download_button(
                                label="Download image",
                                data=file,
                                file_name=x,
                                mime="image/jpg"
                            )

def email_box(x):
    if st.checkbox("Email"): …
Run Code Online (Sandbox Code Playgroud)

html css python streamlit

3
推荐指数
1
解决办法
2486
查看次数

在 Windows 上的 PyCharm 中调试 Streamlit 应用程序

我正在尝试设置一种在 PyCharm 中调试Streamlit脚本的方法。我在 Win10/64 位机器上,在使用 conda 创建的虚拟环境中工作。以默认方式运行代码并按streamlit run main.py预期工作。我已经阅读了几篇论坛帖子,最重要的是这里的相关问题

我的问题如下:上述问题的答案建议更改调试配置以使用Module name而不是Script path输入streamlit.cli作为模块。然后在参数中应该将其设置run main.py为参数。

不幸的是,这给我带来了以下错误:

没有名为streamlit.cli的模块

我在哪里找到streamlit.cli它不应该与库的默认 pip 安装一起安装?我需要单独安装吗?

任何帮助深表感谢!

python pycharm streamlit

3
推荐指数
1
解决办法
2385
查看次数

Altair Hconcat - 是否可以在同一 HConCat 中为图表配置不同的轴?

我正在用来streamlit构建一个仪表板,我想一个挨着一个地展示 2 个图表,使用altair效果很好,该hconcat功能允许我做到这一点。

import altair as alt

df1 = pd.DataFrame({'metric':list('ab'),
             'value':[8,10]})

df2 = pd.DataFrame({'metric':list('xyz'),
             'value':[5,9,7]})

chart_1 = (alt.Chart(df1).mark_bar().encode(x='metric', y='value'))
chart_2 = (alt.Chart(df2).mark_bar().encode(x='metric', y='value'))

(chart_1 | chart_2)
Run Code Online (Sandbox Code Playgroud)

输出

我希望一个图表的 Y 轴位于左侧,而另一个图表的 Y 轴位于右侧,但尚未找到解决方案。配置可以在图表级别进行:

chart_2 = (alt.Chart(df2).mark_bar().encode(x='metric', y='value')).configure_axisY(orient='right')
Run Code Online (Sandbox Code Playgroud)

但是当使用 func 呈现时会抛出异常hconcat

ValueError: Objects with "config" attribute cannot be used within HConcatChart. Consider defining the config attribute in the HConcatChart object instead.
Run Code Online (Sandbox Code Playgroud)

有办法做到这一点吗?

提前致谢

python altair streamlit

2
推荐指数
1
解决办法
2054
查看次数

Altair 颜色条形图(按值)未显示

尝试使用基于图表中未显示的值的条件为条形图着色。

我得到了这个数据框:

在此输入图像描述

我想将条形颜色设置为绿色,如果row.presented_value > row.coloring_value,否则设置为红色。

我看到了常量值显示值的条件示例,但无法让它为我工作。

在下面的代码示例中,我希望foobar都是红色的。

import pandas as pd

df = pd.DataFrame({'name':['bar','foo'],
                  'presented_value':[10,20],
                  'coloring_value':[15,25]})

(alt.Chart(df, height=250, width=375).mark_bar()
 .encode(x='name', y=alt.Y('presented_value', axis=alt.Axis(orient='right')),
         color=alt.condition(alt.datum['presented_value'] > df.loc[df.name==alt.datum.x,
                                                        'coloring_value'].values[0],
        alt.value('lightgreen'),alt.value('darkred'))
        )
)
Run Code Online (Sandbox Code Playgroud)

变化1

coloring_value更改两个条形的第一个值<10将是绿色的,尽管我只希望bar是绿色的。

df = pd.DataFrame({'name':['bar','foo'],
                  'presented_value':[10,20],
                  'coloring_value':[5,25]})

(alt.Chart(df, height=250, width=375).mark_bar()
 .encode(x='name', y=alt.Y('presented_value', axis=alt.Axis(orient='right')),
         color=alt.condition(alt.datum['presented_value'] > df.loc[df.name==alt.datum.x,
                                                        'coloring_value'].values[0],
        alt.value('lightgreen'),alt.value('darkred'))))
Run Code Online (Sandbox Code Playgroud)

变化2

仍然没有按正确的值着色。关于如何完成它有什么想法吗?提前致谢!

altair streamlit

2
推荐指数
1
解决办法
1482
查看次数

Altair 条形图 - 标签放置和格式

跟进这个问题,我有两个额外的选择来实施:

  1. 将标签的位置设置在图表的中间,无论条形高度如何
  2. 格式化标签以显示为字符串的一部分,包括括号

我的代码目前看起来像这样:

df = pd.DataFrame({'name':['bar','foo'],
                  'presented_value':[2,20],
                  'coloring_value':[1,25]})

base = (alt.Chart(df, height=250, width=375).mark_bar()
 .encode(
    x='name',
    y=alt.Y('presented_value', axis=alt.Axis(orient='right')),
    color='name'
  )
)
bars = base.mark_bar().encode(color=alt.condition(
      alt.datum.presented_value > alt.datum.coloring_value,
      alt.value('lightgreen'),
      alt.value('darkred')
    ))

text_sub_brand = base.mark_text(
    align='center', baseline='bottom', 
    dy=35, fontSize=24
).encode(
    text='presented_value'
)
text_cluster = base.mark_text(
    align='center', baseline='bottom', 
    dy=50, fontSize=16
).encode(
    text='coloring_value'
).transform_calculate(label='"Cluster value: " + datum.coloring_value')


(bars + text_sub_brand + text_cluster).properties(width=700)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

关于放置,我尝试了MarkDef使用文档here的不同参数,但没有找到允许相对于图表而不是条形放置的选项。如上图所示,foo我想避免标签出现在 Y 轴区域之外的情况。

关于格式,我尝试在此处实施解决方案但由于某种原因在我的情况下不起作用。理想情况下,我希望格式为,label='"(" + datum.coloring_value + ")"') …

python altair streamlit

2
推荐指数
1
解决办法
1240
查看次数

如何使用带有 Streamlit 的按钮显示文件夹中的图像?

我想使用按钮在我的 Streamlit Web 应用程序中显示图像。

因此,每当用户单击按钮时,图像都必须显示在 Streamlit Web 应用程序上。

下面给出的代码:

feature_choice2 = st.sidebar.multiselect("Plot Size", task2)
if st.button('Find Blueprint'):
    if feature_choice2 == '3-marla':
        imagee = cv2.imread('Floor_plans/3-marla.png')
        cv2.imshow('Image', imagee)
        st.image(imagee, caption='3 marla plot')
Run Code Online (Sandbox Code Playgroud)

python streamlit

2
推荐指数
1
解决办法
1万
查看次数

Streamlit.text_area 可配置性

我想知道两件事。

  1. 是否可以更改streamlit.text_area()方法创建的 text_area 的大小(长度和宽度)?如果是,怎么办?

  2. 那么我的第二个疑问是关于这段代码:

import streamlit as st

st.title('Text analyser')
TextBox = st.text_area('Enter text here...')

if st.button('Analyse'):
    st.write(TextBox)
Run Code Online (Sandbox Code Playgroud)

当我在文本区域中输入以下内容时:

Hello
this is a test message
line 1
line 2
line 3
Run Code Online (Sandbox Code Playgroud)

输出是单行,即Hello this is a test message line 1 line 2 line 3。如何确保输出位于单独的行中?

python streamlit

2
推荐指数
1
解决办法
7572
查看次数

如何在python和streamlit中下载excel文件?

我有一个 Python 脚本,它读取文件并使用 Python 和 Streamlit 将其转换为数据帧。然后我想创建一个函数,允许用户将此数据框下载为扩展名为 的 Excel 文件.xls

所以我尝试使用这两个函数读取数据框并将其转换为 Excel 文件:

pd.ExcelWriter
df.to_excel
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用链接下载文件时,文件不会下载并显示以下错误:

Failed-Network error
Run Code Online (Sandbox Code Playgroud)

代码:

import pandas as pd 
import streamlit as st

writer = pd.ExcelWriter('update2.xlsx')
df.to_excel(writer, index = False, header=True,encoding='utf-8')
with open(writer,'rb') as f:
    b64 = base64.b64encode(f.read())
    href = f'<a href="data:file/xls;base64,{b64}" download="new_file.{extension}">Download {extension}</a>'

st.write(href, unsafe_allow_html=True)
Run Code Online (Sandbox Code Playgroud)

python excel pandas pandas.excelwriter streamlit

2
推荐指数
1
解决办法
6621
查看次数

如何调整 st.image 显示的图像大小

我有以下代码:

bottom_image = st.file_uploader('', type='jpg', key=6)
if bottom_image is not None:
    st.image(bottom_image)
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是一些图像非常大,我希望能够将它们调整为固定大小。

不确定这是否有影响,但 file_uploader 位于一列中。

我考虑过创建缩略图,但我无法弄清楚。

想法?

python-3.x streamlit

2
推荐指数
1
解决办法
1万
查看次数

强制streamlit在特定的python版本(或特定环境下)运行

我有一个 Streamlit 应用程序,设置为通过双击 *.bat 文件来运行,该文件包含启动应用程序的命令:streamlit run myApp.py。有谁知道如何强制该应用程序在特定的 python 版本中运行?我的基础Python是3.9,我创建了一个基于Python 3.6的环境(conda env create ...),我在其中安装了streamlit并创建了应用程序,我希望它在那里运行。我使用该环境打开 sypder,仔细检查 env 是否处于活动状态(spyder 控制台中的 python --version),但是当我使用 *bat 文件运行应用程序时,它显示正在 python 3.8 中运行!

python environment python-venv streamlit

2
推荐指数
1
解决办法
2109
查看次数