我使用以下代码创建了一个 pandas 散点矩阵:
import numpy as np
import pandas as pd
a = np.random.normal(1, 3, 100)
b = np.random.normal(3, 1, 100)
c = np.random.normal(2, 2, 100)
df = pd.DataFrame({'A':a,'B':b,'C':c})
pd.scatter_matrix(df, diagonal='kde')
这导致以下散点矩阵:
第一行没有 ytick 标签,第三列没有 xtick 标签,第三项“C”没有标签。
知道如何用缺少的标签完成这个图吗?
最佳答案
访问有问题的子图并像这样更改其设置。
axes = pd.scatter_matrix(df, diagonal='kde')
ax = axes[2, 2] # your bottom-right subplot
ax.xaxis.set_visible(True)
draw()
您可以在下面的链接中查看 scatter_matrix 函数如何进行标记。如果您发现自己一遍又一遍地这样做,请考虑将代码复制到文件中并创建您自己的自定义 scatter_matrix 函数。
https://github.com/pydata/pandas/blob/master/pandas/tools/plotting.py#L160
编辑,回应被拒绝的评论:
这个明显的扩展,做 ax[0, 0].xaxis.set_visible(True)
等等,是行不通的。出于某种原因, scatter_matrix 似乎为 axes[2, 2] 设置了刻度和标签而不使它们可见,但它没有为其余部分设置刻度和标签。如果您决定有必要在其他子图中显示刻度和标签,则必须更深入地研究上面链接的代码。
具体来说,将 if 语句的条件更改为:
if i == 0
if i == n-1
if j == 0
if j == n-1
分别。我还没有对此进行测试,但我认为它可以解决问题。
关于python - Pandas 3x3 散点矩阵缺少标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14511752/