python - Pandas 3x3 散点矩阵缺少标签

标签 python matplotlib pandas

我使用以下代码创建了一个 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')

这导致以下散点矩阵: enter image description here

第一行没有 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/

相关文章:

python - 如何防止Python IDLE在运行新脚本时重新启动

python - matshow 的问题

python - 如何强制 Pandas 将数字读取为 "int64"而不是 "float64"

python - Pandas - 当频率不是倍数时重新采样?

php - 运行非常长的脚本 - 如何让它们保持运行并在它们失败时重新启动它们?

python - python.exe、python3.exe 和 python3.6.exe 之间有什么区别?

python - Numpy reshape 产生不同的大小错误

matplotlib - plt.show() 后不显示绘图,未给出错误 'and only shows : <Figure size 432x288 with 0 Axes>'

python - Flask 和 Pandas ExcelWriter 不使用 BytesIO 更改列格式

python - Matplotlib/v-3.4.2 matplotlibrc 中 latex 前导码的问题