相关疑难解决方法(0)

使用熊猫的相关矩阵

我有一个具有大量功能的数据集,因此分析相关矩阵变得非常困难.我想绘制一个相关矩阵,我们可以使用dataframe.corr()pandas库中的函数.是否有任何内置函数由pandas库提供以绘制此矩阵?

python data-visualization matplotlib information-visualization pandas

175
推荐指数
11
解决办法
33万
查看次数

将旋转的xticklabels与它们各自的xticks对齐

检查下图的x轴.如何将标签向左移动一点,使它们与各自的刻度对齐?

我正在使用以下方式旋转标签:

ax.set_xticks(xlabels_positions)
ax.set_xticklabels(xlabels, rotation=45)
Run Code Online (Sandbox Code Playgroud)

但是,正如您所看到的,旋转以文本标签的中间为中心.这使它看起来像是向右移动了.

我试过用这个代替:

ax.set_xticklabels(xlabels, rotation=45, rotation_mode="anchor")
Run Code Online (Sandbox Code Playgroud)

......但它没有按照我的意愿行事.并且"anchor"似乎是rotation_mode参数允许的唯一值.

例

matplotlib

122
推荐指数
6
解决办法
9万
查看次数

dpi与数字大小之间的关系

我使用matplotlib创建了一个图,但我已经意识到绘图轴和绘制的线被缩小了. 在此输入图像描述

阅读这个早期的讨论主题,它解释了如何设置数字大小.

fig, ax = plt.subplots()

fig.set_size_inches(3, 1.5)

plt.savefig(file.jpeg, edgecolor='black', dpi=400, facecolor='black', transparent=True)

使用上面的代码(为简洁起见,删除了其他配置),我确实得到了一个具有1200 X 600所需尺寸的结果图像文件(我们应该说分辨率吗?)和所需的文件大小.

投影图像以不寻常的方式缩小,例如注释被放大.我可以在轴上设置标签的大小,但由于底部和右侧的脊仍然很大,因此图形仍然看起来与标尺不成比例,因此绘制的线也是如此.

所以问题是,我们如何解决这个问题,哪些配置出错?

plot visualization graph matplotlib

33
推荐指数
1
解决办法
2万
查看次数

Matplotlib:在刻度线之间移动刻度线标签

我想使用matplotlib创建混淆矩阵的可视化.下面显示的方法的参数是类标签(字母表),分类结果列表(conf_arr)和输出文件名.到目前为止,我对结果非常满意,最后一个问题是:

我无法使网格线之间的轴刻度标签居中.如果我将extent参数传递给imshow方法,如下所示,网格按照我希望的方式对齐.如果我把它评论出来,那么网格就会错位,但标签是我希望的.我想我需要一种方法来在关联的tick和下一个tick之间移动ticklabel,但我不知道是否以及如何做到这一点.

总而言之,我希望左图像中的网格/刻度,但是像右图中一样定位的刻度标记:

在此输入图像描述

def create_confusion_matrix(alphabet, conf_arr, outputname):
    norm_conf = []
    width = len(conf_arr)
    height = len(conf_arr[0])
    for i in conf_arr:
        a = 0
        tmp_arr = []
        a = sum(i, 0)
        for j in i:
            tmp_arr.append(float(j)/float(a))
        norm_conf.append(tmp_arr)

    fig = plt.figure(figsize=(14,14))
    #fig = plt.figure()
    plt.clf()
    ax = fig.add_subplot(111)
    ax.set_aspect(1)
    ax.grid(which='major')
    res = ax.imshow(np.array(norm_conf), cmap=plt.cm.binary, 
                    interpolation='none', aspect='1', vmax=1,
                    ##Commenting out this line sets labels correctly,
                    ##but the grid is off
                    extent=[0, width, height, 0]
                    )
    divider = make_axes_locatable(ax)
    cax = divider.append_axes("right", size="5%", pad=0.2) …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

20
推荐指数
1
解决办法
7895
查看次数

如何在matplotlib中旋转xticklabels以使每个xticklabel之间的间距相等?

如何在matplotlib中旋转xticklabels以使每个xticklabel之间的间距相等?

例如,使用此代码:

import matplotlib.pyplot as plt
import numpy as np

# Data + parameters
fontsize = 20
t = np.arange(0.0, 6.0, 1)
xticklabels = ['Full', 'token emb', 'char emb', 'char LSTM', 
               'token LSTM', 'feed forward','ANN']

# Plotting
fig = plt.figure(1)
ax = fig.add_subplot(111)
plt.plot(t, t)
plt.xticks(range(0, len(t) + 1))
ax.tick_params(axis='both', which='major', labelsize=fontsize)
ax.set_xticklabels(xticklabels, rotation = 45)
fig.savefig('test_rotation.png', dpi=300, format='png', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

我获得:

在此输入图像描述

每个xticklabel之间的间距是不相等的.例如,"Full"和"token emb"之间的间距远大于"前馈"和"ANN"之间的间距.

我在Windows 7 SP1 x64 Ultimate上使用Matplotlib 2.0.0和Python 3.5 64位.

python plot label matplotlib

19
推荐指数
2
解决办法
3万
查看次数

通过在matplotlib中使用Latex,xticklabel中的正值和负值之间的差异

我在matplotlib中设置了usetext = True来使用Latex来管理我的绘图中的字体布局.现在,x轴和xticklabel之间的空间对于正值和负值是不同的,如图所示.

是否有可能获得相同的空间?

例:

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(-10.0, 10.0, 100)
s = np.cos(t)

plt.rc('text', usetex=True)

plt.rc('font', family='serif', size=30)
plt.plot(t, s)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python latex matplotlib

17
推荐指数
1
解决办法
832
查看次数

如何仅移动刻度标签(不移动相应的刻度线)?

我正在使用matplotlib生成图表,我使用set_ticksset_ticklabels标记x轴上的几个重要值.但是这些标签中的一些太靠近并且重叠.但我不知道如何在不移动刻度的情况下移动这些标签.

这是一个例子:

重叠的刻度标签

我尝试了几个技巧但失败了,我还没有在互联网上找到这个问题的答案.任何帮助,谢谢.


更新:

源代码:

fig = mpl.figure( figsize=(3, 3) )              # force figsize here to reproduce the problem.
ax = fig.add_subplot(1, 1, 1, frameon=False)
ax.set_xlim(-0.015, 1.515)
ax.set_ylim(-0.01, 1.01)
ax.set_xticks([0, 0.3, 0.4, 1.0, 1.5])
ax.grid(True)
mpl.show()
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

我尝试了几个技巧,最好的一个是:

fig = mpl.figure( figsize=(3, 3) )
ax = fig.add_subplot(1, 1, 1, frameon=False)
ax.set_xlim(-0.015, 1.515)
ax.set_ylim(-0.01, 1.01)
ax.set_xticks([0, 0.3, 0.4, 1.0, 1.5])
ax.set_xticklabels([0.0, "", "", 1.0, 1.5])
ax.set_xticks([0.35], minor=True)
ax.set_xticklabels(["0.3 0.4"], minor=True)
ax.grid(True)
mpl.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是在x = 0.35处有一个小问题,我不知道如何删除它.


更新2:

好的,我找到了自己删除小蜱的方法: …

matplotlib

12
推荐指数
2
解决办法
1万
查看次数