小编dex*_*cko的帖子

将项目添加到现有的 Matplotlib 图例

鉴于以下设置:

from matplotlib import pyplot as plt
fig, ax = plt.subplots()
ax.plot([0,1,2,3,4,5,6], label='linear')
ax.plot([0,1,4,9,16,25,36], label='square')
lgd = ax.legend(loc='lower right')
Run Code Online (Sandbox Code Playgroud)

如果函数add_patch仅lgd作为参数接收,是否可以将自定义图例项添加到现有项之上的图例中,而不更改图例的其他属性?

我能够使用以下方法添加项目:

def add_patch(legend):
    from matplotlib.patches import Patch
    ax = legend.axes
    handles, labels = ax.get_legend_handles_labels()
    handles.append(Patch(facecolor='orange', edgecolor='r'))
    labels.append("Color Patch")
    ax.legend(handles=handles, labels=labels)
Run Code Online (Sandbox Code Playgroud)

但这不会保留图例的属性,如位置。绘制线条后,如何添加仅给定图例对象的项目?

python matplotlib legend

7
推荐指数
2
解决办法
4786
查看次数

使用 **kwargs 的 Callable 的类型注释

有一个函数 ( f ) 使用函数签名 ( g ),该函数签名采用已知的第一组参数和任意数量的关键字参数**kwargs。有没有办法将 包含在(f)中描述**kwargs的(g)的类型签名中?

例如:

from typing import Callable, Any
from functools import wraps
import math


def comparator(f: Callable[[Any, Any], bool]) -> Callable[[str], bool]:
    @wraps(f)
    def wrapper(input_string: str, **kwargs) -> bool:
        a, b, *_ = input_string.split(" ")
        return f(eval(a), eval(b), **kwargs)

    return wrapper


@comparator
def equal(a, b):
    return a == b


@comparator
def equal_within(a, b, rel_tol=1e-09, abs_tol=0.0):
    return math.isclose(a, b, rel_tol=rel_tol, abs_tol=abs_tol)


# All following statements should …
Run Code Online (Sandbox Code Playgroud)

python typing

7
推荐指数
2
解决办法
3627
查看次数

用 R 中的乳胶注释 ggplot2 人脸标签

给定一个样本数据集:

size = 10000
dist = seq(0, 10, length.out=size)
cohort.kv = list(A=3,B=40,C=44)
cohort = sample(names(cohort.kv), size, TRUE)
cohort.v = mapply(function(v) cohort.kv[[v]], cohort)
across.kv = list(ONE=1,TWO=2,THREE=3)
across = sample(names(across.kv), size, TRUE)
across.v = mapply(function(v) across.kv[[v]], across)
along.kv = list(FIVE=5, EIGHT=8, ELEVEN=11)
along = sample(names(along.kv), size, TRUE)
along.v = mapply(function(v) along.kv[[v]], along)
df = data.frame(
  dist=dist, cohort=cohort, across=across, along=along,
  value=sin(dist/across.v+cohort.v)*along.v
)
df$across = factor(df$across, levels=names(across.kv))
df$along = factor(df$along, levels=names(along.kv))
Run Code Online (Sandbox Code Playgroud)

我正在尝试将乳胶添加到刻面标签中。这个答案解释了如何将乳胶添加到 ggplot 标签。下面的代码在轴标签中生成一个带有乳胶的分面 ggplot,并修改了分面标签。

library(ggplot2)
# install.packages("latex2exp", dependencies=TRUE)
library(latex2exp)
(
  ggplot(df, …
Run Code Online (Sandbox Code Playgroud)

latex r ggplot2

6
推荐指数
1
解决办法
1705
查看次数

使用 Github OAuth 时无需服务器的客户端身份验证

我正在尝试编写一个使用 Github API 并托管在 github.io 上的小应用程序

我正在关注网络应用程序流程文档,其可概括为:

  1. 应用程序网页使用客户端 id 参数和将用户链接回应用程序网页的重定向 url 参数将用户重定向到 github.com
  2. 一旦用户在 github 端进行身份验证,他们就会被重定向到应用程序网页,并带有一个临时代码参数,该参数可用于获取解锁 API 的访问令牌
  3. 从临时代码获取访问令牌的 POST 请求需要提交客户端 id 和客户端密钥

如果应用程序仅是客户端(静态页面主机除外),我应该如何处理客户端密钥?它无法嵌入到应用程序中,或者用户可以找到它。是否必须使用服务器来协调身份验证过程?

oauth

6
推荐指数
1
解决办法
1250
查看次数

Python 3 - 向urllib.request请求添加自定义标头

在Python 3中,以下代码获取网页的HTML源代码.

import urllib.request
url = "https://docs.python.org/3.4/howto/urllib2.html"
response = urllib.request.urlopen(url)

response.read()
Run Code Online (Sandbox Code Playgroud)

使用urllib.request时,如何将以下自定义标头添加到请求中?

headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)' }
Run Code Online (Sandbox Code Playgroud)

urllib web-crawler python-3.x python-requests

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

Python 3 - 将struct.unpack中的数据写入json而不进行单独重铸

我有一个大型对象,使用struct.unpack从二进制文件中读取,一些值是字符数组,读取为字节.

由于Python 3中的字符数组被读取为字节而不是字符串(如Python 2中所示),因此它们不能直接传递给json.dumps,因为"bytes"不是JSON可序列化的.

有没有办法从解压缩结构到json而不搜索每个值并将字节转换为字符串?

json struct python-3.x

5
推荐指数
1
解决办法
744
查看次数

Python random.random - 滚动0的机会

如文档中所述,random.random将"返回[0.0,1.0]范围内的下一个随机浮点数"

那么它返回0的几率是多少?

python random

4
推荐指数
1
解决办法
131
查看次数

psycopg2-将SQL对象与execute_values一起使用

我正在使用execute_values插入数据,这需要一个sql查询。该查询是根据文档中的建议使用psycopg2.sql.SQL构造的,但是execute_values不会使用该对象。

这是我的代码:

import psycopg2 as pg
from psycopg2 import extras
from psycopg2 import sql

config = {
    'host' : 'localhost',
    'user' : 'username',
    'password' : 'password',
    'dbname' : 'myDatabase'
}

connection = pg.connect(**config)
cursor = connection.cursor()

tableName = 'myTable'
dataset = [[1,2],[3,4],[5,6]]

queryText = "INSERT INTO {table} (uid,value) VALUES %s"
query = sql.SQL(queryText).format(table=sql.Identifier(tableName))

extras.execute_values(cursor,query,dataset)
Run Code Online (Sandbox Code Playgroud)

最后一行给出以下错误:

AttributeError: 'Composed' object has no attribute 'encode'
Run Code Online (Sandbox Code Playgroud)

如果将查询直接指定为字符串(如下所示),则执行将运行。

query = """INSERT INTO "myTable" (uid,value) VALUES %s"""
Run Code Online (Sandbox Code Playgroud)

可以使用字符串格式将表名插入查询中,但是显然,即使在gunpoint也不应该这样做。如何安全地将变量表名称插入查询并使用execute_values?我找不到将SQL对象转换为字符串的内置方法。

python sql database postgresql psycopg2

4
推荐指数
1
解决办法
2651
查看次数

Code::Blocks - 如何在编辑器中显示装订线/垂直右边距线

如何在 Code::Blocks 的编辑器窗口中显示垂直右边距线(通常为 80 个字符)?

margin codeblocks gutter

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