我有一个具有大量功能的数据集,因此分析相关矩阵变得非常困难.我想绘制一个相关矩阵,我们可以使用dataframe.corr()pandas库中的函数.是否有任何内置函数由pandas库提供以绘制此矩阵?
python data-visualization matplotlib information-visualization pandas
检查下图的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创建了一个图,但我已经意识到绘图轴和绘制的线被缩小了.

阅读这个早期的讨论主题,它解释了如何设置数字大小.
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所需尺寸的结果图像文件(我们应该说分辨率吗?)和所需的文件大小.
投影图像以不寻常的方式缩小,例如注释被放大.我可以在轴上设置标签的大小,但由于底部和右侧的脊仍然很大,因此图形仍然看起来与标尺不成比例,因此绘制的线也是如此.
所以问题是,我们如何解决这个问题,哪些配置出错?
我想使用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) 如何在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位.
我在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)

我正在使用matplotlib生成图表,我使用set_ticks和set_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处有一个小问题,我不知道如何删除它.
好的,我找到了自己删除小蜱的方法: …