Python 3:即使使用相同的数据,子图也不同

Python 3: Subplots different even though using same data

我正在使用 python 3 seaborn 生成以下子图。

import numpy as np; np.random.seed(1)
import seaborn as sns; sns.set()
uniform_data = np.random.rand(500, 12)
plt.subplot(2, 1, 1)
ax = sns.heatmap(uniform_data)
plt.subplot(2, 1, 2)
ax = sns.heatmap(uniform_data)

两个子图使用相同的数据,但给出了不同的图。我不明白为什么。

import numpy as np; np.random.seed(1)
import seaborn as sns; sns.set()
uniform_data = np.random.rand(500, 12)

fig, axes = plt.subplots()
axes = sns.heatmap(uniform_data)

fig, axes = plt.subplots()
axes = sns.heatmap(uniform_data)

输出:

我认为问题出在您试图绘制太多线条。如果减小数组的大小,您可以清楚地看到图形是相同的

import numpy as np; np.random.seed(1)
import seaborn as sns; sns.set()
uniform_data = np.random.rand(10, 12)
plt.subplot(2, 1, 1)
ax = sns.heatmap(uniform_data)
plt.subplot(2, 1, 2)
ax = sns.heatmap(uniform_data)

但是当你试图在图中的小 space 中绘制 500 条线时,matplotlib 无法绘制所有线,并选择一个随机(?)子集来显示。

如果您要增加图形的大小以便绘制所有线条,那么您将再次获得相同的输出。

import numpy as np; np.random.seed(1)
import seaborn as sns; sns.set()
uniform_data = np.random.rand(500, 12)
plt.figure(figsize=(10,30))
plt.subplot(2, 1, 1)
ax = sns.heatmap(uniform_data)
plt.subplot(2, 1, 2)
ax = sns.heatmap(uniform_data)