我有一个包含一些国家和变量的数据框,我想folium用整个世界的geojson文件生成一个等值区域图.我folium在将色标上的最大值分配给我的数据帧中不存在的国家时遇到问题.以下最低限度:
import random
import pandas as pd
import folium
import json
map_data = pd.DataFrame({
'A3':['POL', 'CZE', 'SVK', 'HUN', 'AUT'],
'value':random.sample(range(10), 5)
})
m = folium.Map(
location = [50, 15],
zoom_start = 4
)
m.choropleth(
geo_data = 'https://github.com/simonepri/geo-maps/releases/download/v0.6.0/countries-land-10km.geo.json',
data = map_data,
columns = ['A3', 'value'],
key_on = 'feature.properties.A3',
fill_color = 'YlOrRd'
)
Run Code Online (Sandbox Code Playgroud)
我的问题如下:如何判断folium为丢失的国家(即存在于json文件中但未存在的那些)中的特定颜色(例如,灰色或透明map_data),而不是将它们作为给定变量的最大值着色(这是一种奇怪的行为)?
TL; DR:如何在非活动选项卡上强制绘制数据表但其输入更改?
有一个闪亮的应用程序看起来像这样:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
sidebarLayout(
sidebarPanel(
numericInput(
inputId = "random_val",
label = "pick random value",
value = 1
)
),
mainPanel(
tabsetPanel(
id = "tabset",
tabPanel(
title = "some_other_tab",
"Some other stuff"
),
tabPanel(
title = "test_render",
textOutput("echo_test"),
DTOutput("dt_test")
)
)
)
)
),
server = function(input, output) {
output$echo_test <- renderText({
cat("renderText called \n")
input$random_val
})
outputOptions(output, "echo_test", suspendWhenHidden = FALSE)
output$dt_test <- renderDT({
cat("renderDT called \n")
df <- data.frame(
a = 1:10^6,
b …Run Code Online (Sandbox Code Playgroud) 我在设置日期时间轴格式的语言时遇到问题bokeh。根据文档,“根据当前区域设置”DatetimeTickFormatter生成时间刻度。然而,无论我在 Python 中设置什么语言环境,我都会得到一个英文格式的图:
# jupyter notebook
import locale
locale.setlocale(locale.LC_ALL, 'pl')
import random
from datetime import datetime, date
from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.models.formatters import DatetimeTickFormatter
output_notebook()
x_values = [datetime(2018, i, 1) for i in range(6, 13)]
y_values = [random.normalvariate(0, 1) for i in range(6, 13)]
p = figure(plot_width=600, plot_height=300,
x_axis_type='datetime', title="test",
x_axis_label='x test', y_axis_label='y test')
p.line(
x=x_values,
y=y_values
)
p.xaxis.formatter = DatetimeTickFormatter(months = '%B')
show(p)
Run Code Online (Sandbox Code Playgroud)
如果相关,则全局系统区域设置设置为en-US: …
有没有办法将命令及其输出写入外部文件?
假设我有一个脚本outtest.py:
import random
from statistics import median, mean
d = [random.random()**2 for _ in range(1000)]
d_mean = round(mean(d), 2)
print(f'mean: {d_mean}')
d_median = round(median(d), 2)
print(f'median: {d_median}')
Run Code Online (Sandbox Code Playgroud)
现在,如果我只想捕获它的输出,我知道我可以这样做:
python3 outtest.py > outtest.txt
Run Code Online (Sandbox Code Playgroud)
但是,这只会给我一个outtest.txt文件,例如:
mean: 0.34
median: 0.27
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一种获取输出文件的方法,例如:
import random
from statistics import median, mean
d = [random.random()**2 for _ in range(1000)]
d_mean = round(mean(d), 2)
print(f'mean: {d_mean}')
>> mean: 0.34
d_median = round(median(d), 2)
print(f'median: {d_median}')
>> median: 0.27
Run Code Online (Sandbox Code Playgroud)
或其他一些格式(降价,无论如何)。本质上,类似于jupyter notebook或 …
如何检查给定的链接(URL)是指向文件还是另一个网页?
我的意思是:
目前,我正在做一个非常棘手的多步骤检查,它还需要相对于绝对链接进行转换,如果缺少则添加http前缀,并删除“#”锚链接/参数才能正常工作。我也不确定我是否将存在的所有可能的页面扩展名列入白名单。
import re
def check_file(url):
try:
sub_domain = re.split('\/+', url)[2] # part after '2nd slash(es)''
except:
return False # nothing = main page, no file
if not re.search('\.', sub_domain):
return False # no dot, no file
if re.search('\.htm[l]{0,1}$|\.php$|\.asp$', sub_domain):
return False # whitelist some page extensions
return True
tests = [
'https://www.stackoverflow.com',
'https://www.stackoverflow.com/randomlink',
'https:////www.stackoverflow.com//page.php',
'https://www.stackoverflow.com/page.html',
'https://www.stackoverflow.com/page.htm',
'https://www.stackoverflow.com/file.exe',
'https://www.stackoverflow.com/image.png'
]
for …Run Code Online (Sandbox Code Playgroud) tl;dr:如何最大限度地增加可以并行发送的 http 请求数?
我正在使用aiohttp库从多个 url 获取数据。我正在测试它的性能,我观察到在这个过程中的某个地方存在瓶颈,一次运行更多的 url 无济于事。
我正在使用此代码:
import asyncio
import aiohttp
async def fetch(url, session):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0'}
try:
async with session.get(
url, headers=headers,
ssl = False,
timeout = aiohttp.ClientTimeout(
total=None,
sock_connect = 10,
sock_read = 10
)
) as response:
content = await response.read()
return (url, 'OK', content)
except Exception as e:
print(e)
return (url, 'ERROR', str(e))
async def run(url_list):
tasks = []
async with …Run Code Online (Sandbox Code Playgroud) 我在一个闪亮的应用程序中有一个selectizeInputwith multiple = TRUE,我想阻止用户选择NULL(即,将其留空)。我的目标是确保至少选择一项(无论哪一项)。
我发现这个问题是关于相反的问题(即限制最大选择数),并且我检查了selectize 文档。不幸的是,似乎没有minItems选择。有没有办法实现我想要的功能?
最小示例:
library(shiny)
shinyApp(
ui = fluidPage(
selectizeInput(
inputId = "testSelect",
label = "Test",
choices = LETTERS[1:4],
selected = LETTERS[1],
multiple = TRUE,
# Problem: how to specify 'minItems' here
options = list(maxItems = 2)
),
verbatimTextOutput("selected")
),
server = function(input, output) {
output$selected <- renderPrint({
input$testSelect
})
}
)
Run Code Online (Sandbox Code Playgroud) 我编写了一个小应用程序,您可以在其中看到一个单选按钮,您可以使用它在绘图图表和渲染表格之间切换。有用。之后我阅读了有关模块的 Shiny 文档并最终得到了这个应用程序:
我的应用程序R
library(shiny)
ui <- fluidPage(
fluidRow(
column(6,
chartTableSwitchUI("firstUniqueID")
)
)
)
server <- function(input, output) {
callModule(chartTableSwitch, "firstUniqueID")
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
我编写了一个 globar.R ,如下所示:
library(shiny)
library(plotly)
#define a simple dataframe for module example
X <- c("a", "b", "c")
Y <- c(1,2,3)
df <- data.frame(X,Y)
#UI function for first module
chartTableSwitchUI <- function(id){
ns <- NS(id)
tagList(
radioButtons("rb1", "View", choices = c(ns("Chart"), ns("Table")),
selected = "Chart", inline = TRUE),
conditionalPanel(
condition = "input.rb1 == …Run Code Online (Sandbox Code Playgroud)