我假设当时itertools.product生成一个元素。我现在注意到这是不正确的。简单的概念证明:
Class A:
def __init__(self, n):
self.source = iter(range(n))
def __iter__(self):
return self
def __next__(self):
val = next(self.source)
print("I am at:", val)
return val
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样做:
from itertools import product
l = product(A(3), A(3))
print("Here")
next(l)
Run Code Online (Sandbox Code Playgroud)
我希望有作为输出:
>'Here'
>'I am at 0'
>'I am at 0'
Run Code Online (Sandbox Code Playgroud)
但是我有
>'I am at 0'
>'I am at 1'
>'I am at 2'
>'I am at 0'
>'I am at 1'
>'I am at 2'
>'Here'
Run Code Online (Sandbox Code Playgroud)
我想念什么吗?
我正在制作一个很大的PairGrid图形,但无法将图例设置在图之外(右侧)。PairGrid似乎没有继承legend_out的选项FaceGrid。到目前为止,这是我的尝试,您可以看到图例与图形重叠。
from random import choice
from numpy import random
from matplotlib import pyplot as plt
import seaborn as sns
import pandas as pd
def my_kdeplot(dfx, dfy, *args, **kwargs):
ax = sns.kdeplot(dfx, dfy, alpha=0.7,
cmap=sns.light_palette(kwargs['color'], as_cmap=True))
names = [choice('ABCDE') for _ in range(1000)]
df = pd.DataFrame(list(zip(names, *[random.random(1000) for _ in range(5)])),
columns=['names','A','B','C','D','E'])
g = sns.PairGrid(df, hue='names')
g.map_lower(my_kdeplot)
g.map_upper(plt.scatter, alpha=0.7)
g.map_diag(plt.hist)
g = g.add_legend(fontsize=14)
sns.plt.savefig('fig.png')
Run Code Online (Sandbox Code Playgroud)
我一直试图用pcolormesh做一个简单的热图,我遇到了一些奇怪的效果,有些尺寸,它们会添加空的白色列.如果我创建一个10x30,如下所示,它完美地工作.
from matplotlib import pyplot as plt
import numpy as np
d = []
for x in range(10):
d.append([])
for y in range(30):
d[-1].append(y)
plt.pcolormesh(np.array(d))
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用10x37:
from matplotlib import pyplot as plt
import numpy as np
d = []
for x in range(10):
d.append([])
for y in range(34):
d[-1].append(y)
plt.pcolormesh(np.array(d))
plt.show()
Run Code Online (Sandbox Code Playgroud)
我最后得到了那些奇怪的白色柱子.这似乎适用于几个值(10x11失败,但10x12工作......我无法分辨模式.

有没有办法删除它们,可能强制热图的最终大小?
generator ×1
iteration ×1
legend ×1
matplotlib ×1
python ×1
python-3.5 ×1
python-3.7 ×1
seaborn ×1