我有一个应用程序可以将图像转换为铅笔素描,在该应用程序中我需要对按钮进行三处更改
示例代码:
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) 我正在尝试设置一种在 PyCharm 中调试Streamlit脚本的方法。我在 Win10/64 位机器上,在使用 conda 创建的虚拟环境中工作。以默认方式运行代码并按streamlit run main.py预期工作。我已经阅读了几篇论坛帖子,最重要的是这里的相关问题。
我的问题如下:上述问题的答案建议更改调试配置以使用Module name而不是Script path输入streamlit.cli作为模块。然后在参数中应该将其设置run main.py为参数。
不幸的是,这给我带来了以下错误:
没有名为streamlit.cli的模块
我在哪里找到streamlit.cli它不应该与库的默认 pip 安装一起安装?我需要单独安装吗?
任何帮助深表感谢!
我正在用来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)
有办法做到这一点吗?
提前致谢
尝试使用基于图表中未显示的值的条件为条形图着色。
我得到了这个数据框:
我想将条形颜色设置为绿色,如果row.presented_value > row.coloring_value,否则设置为红色。
在下面的代码示例中,我希望foo和bar都是红色的。
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)
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)
仍然没有按正确的值着色。关于如何完成它有什么想法吗?提前致谢!
跟进这个问题,我有两个额外的选择来实施:
我的代码目前看起来像这样:
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 + ")"') …
我想使用按钮在我的 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) 我想知道两件事。
是否可以更改streamlit.text_area()方法创建的 text_area 的大小(长度和宽度)?如果是,怎么办?
那么我的第二个疑问是关于这段代码:
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 脚本,它读取文件并使用 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) 我有以下代码:
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 位于一列中。
我考虑过创建缩略图,但我无法弄清楚。
想法?
我有一个 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 中运行!
streamlit ×10
python ×8
altair ×3
css ×1
environment ×1
excel ×1
html ×1
pandas ×1
pycharm ×1
python-3.x ×1
python-venv ×1