Python 熊猫散点图中的勾号标签绘制不正确

Python 熊猫散点图中的勾号标签绘制不正确,python,pandas,Python,Pandas,我正在用熊猫绘制散点图矩阵,但第一个图的记号标签有时绘制正确,有时绘制错误。我不知道怎么了 下面是一个例子: 代码: 伙计们,有人吗 编辑(X的示例): 这是故意的行为。y轴值显示第0列的y轴值。第0行第0列包含概率密度图。第0行、第1-3列包含用于在对角线上创建图形的数据 Pandas Plotting文档中的内容看起来类似 演示: from pandas.tools.plotting import scatter_matrix import pylab import numpy as np

我正在用熊猫绘制散点图矩阵,但第一个图的记号标签有时绘制正确,有时绘制错误。我不知道怎么了

下面是一个例子:

代码:

伙计们,有人吗

编辑(X的示例):


这是故意的行为。y轴值显示第0列的y轴值。第0行第0列包含概率密度图。第0行、第1-3列包含用于在对角线上创建图形的数据

Pandas Plotting文档中的内容看起来类似

演示:

from pandas.tools.plotting import scatter_matrix
import pylab
import numpy as np
import pandas as pd

def create_scatterplot_matix(X, name):    
    pylab.figure()

    df = pd.DataFrame(X)
    axs = scatter_matrix(df, alpha=0.2, diagonal='kde')

    pylab.savefig(name + ".png")

create_scatterplot_matix([[0,0,0,0]
                         ,[1,1,1,1]
                         ,[1,1,1,1]
                         ,[2,2,2,2]],'test')
在这个示例代码中,我使用了一个非常简单的数据集进行演示。我还删除了设置y和x记号的代码部分

这是结果图:

每条对角线上都有一个概率密度图。在每个非对角线中,都有用于在对角线中创建图形的数据。第0行的y轴显示位于第0,0位置的概率密度图的y轴。第一行、第二行和第三行的y轴显示了用于在对角线上创建概率密度图的0,1 0,2和0,3位置中数据的y轴。

您可以在我们的示例中看到以下绘制点:[0,0][1,1][2,2]。[1,1]处的点较暗,因为此位置的点比其他位置的点多

发生的情况是,您的数据集,所有的值都在0和1之间,这就是为什么0.5在两个轴上都完美地显示在行/列的中心。然而,数据严重偏向于值0,这就是为什么概率密度图在接近0时会出现尖峰。第0行概率密度图的最大值看起来像(眼球测试)约为8-10

我个人要做的是将您的左边界代码编辑为如下内容:

autoscale = True # We want the 0,0th item's y-axis to autoscale
for ax in axs[:,0]: # the left boundary
    ax.grid('off', axis='both')
    if autoscale == True:     
        ax.set_autoscale_on(True)
        autoscale = False
    else:
        ax.set_yticks([0, 0.5])
对于我们的示例数据集,使用此技术生成如下图表:

autoscale = True # We want the 0,0th item's y-axis to autoscale
for ax in axs[:,0]: # the left boundary
    ax.grid('off', axis='both')
    if autoscale == True:     
        ax.set_autoscale_on(True)
        autoscale = False
    else:
        ax.set_yticks([0, 0.5])

这似乎是熊猫身上的一种虫子。看

同时,您可以手动调整标签。首先,根据内核密度图中的范围设置所需的标签数量和间隔

axs[0,0].set_yticks([0.24,0.33,0.42])
然后手动更改标签中的文本

axs[0,0].set_yticklabels([0.0, 1.0, 2.0])

你能举一个设计矩阵
X
的例子吗?例如,可以使用一组随机值轻松创建的。这将使在本地尝试更容易。
axs[0,0].set_yticklabels([0.0, 1.0, 2.0])