我使用from typing import *
from inspect import signature
TYPE_A = Callable[[int, int], int]
TYPE_B = Callable[[int], int]
def my_func(x: Union[TYPE_A, TYPE_B]):
sig = signature(x)
if len(sig.parameters.values()) == 1:
x = cast(TYPE_B, x)
x(1)
else:
x = cast(TYPE_A, x)
x(1, 2)
和# Set your secret key: remember to change this to your live secret key in production
# See your keys here: https://dashboard.stripe.com/account/apikeys
stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
subscription = stripe.Subscription.retrieve('sub_49ty4767H20z6a')
stripe.Subscription.modify('sub_49ty4767H20z6a',
items=[{
'id': subscription['items']['data'][0].id,
'plan': 'plan_CBb6IXqvTLXp3f',
}]
)
绘制多个数字,其中轴尺寸在数字之间变化。这是一个演示文稿,所以我希望图形最终与图形边缘左对齐(因此左轴在每张幻灯片上落在同一点上)。相反,会发生的是轴在imshow
分配的空间内居中。这是一个例子:
aspect='equal'
如何让所有三个轴的y轴与每个图的左边缘保持相同的距离?
答案 0 :(得分:1)
由于轴由于图像的固定方面而改变它们的尺寸,所以它们被重新定位使得它们位于图的中心,即使子图参数指定更大的空间。
您可以绘制图形,使轴的位置固定,获得轴的实际宽度,并将右侧子图参数设置为左侧和宽度的总和。
import numpy as np
import matplotlib.pyplot as plt
for width in [7, 10, 13]:
data = np.random.rand(10 * width).reshape(10, width)
fig, ax = plt.subplots(figsize=(6, 4))
fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)
ax.imshow(data)
ax.set_title(u'10 × {}'.format(width))
fig.canvas.draw()
pos=ax.get_position()
fig.subplots_adjust(right=0.1+pos.width)
fig.savefig('10_rows_x_{}_columns.png'.format(width), facecolor='0.7',
edgecolor='none')
plt.show()
黑客将迭代地将轴左侧位置设置为0.1
绘制图形,让轴自行重新缩放,然后再次设置轴位置等,使得它最终会在{{1位置。
x=0.1
请注意,这会重绘大约50倍左右。因此,根据所需的准确性,可以选择稍大的条件,例如import numpy as np
import matplotlib.pyplot as plt
for width in [7, 10, 13]:
data = np.random.rand(10 * width).reshape(10, width)
fig, ax = plt.subplots(figsize=(6, 4))
fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)
ax.imshow(data)
ax.set_title(u'10 × {}'.format(width))
fig.canvas.draw()
while ax.get_position().x0 > 0.1:
pos=ax.get_position()
pos.x0=0.1
ax.set_position(pos)
fig.canvas.draw()
fig.savefig('10_rows_x_{}_columns.png'.format(width), facecolor='0.7',
edgecolor='none')
plt.show()
左右。
两种方法都会产生以下图片。