无法使轴在MatPlotLib 3d上正确对齐 - python

我正在尝试制作3D Matplot图。我无法让完整的轴与对齐的标签一起显示。我概述了下面尝试的步骤。

1)我可以使用以下方法设置y轴标签:

yTicks = list(range(0,90,5)
ax.set_yticks(range(len(yTicks)), True)

无法使轴在MatPlotLib 3d上正确对齐 - python

但是,如您所见,标签的对齐方式非常差。它也与我实际定义的不匹配,应该是5分而不是10分。

2)如果我也尝试使用set_yticklabels,则对齐会修复,但只会打印部分轴。这是代码和图像:

ax.set_yticklabels(yTicks, verticalalignment='baseline',
horizontalalignment='left')

无法使轴在MatPlotLib 3d上正确对齐 - python

注意y轴如何从80变为40。

3)如果我摆脱了True中的set_yticks,所有内容都会挤在一起:

无法使轴在MatPlotLib 3d上正确对齐 - python

4)最后,如果我在标签函数中同时使用set_yticksset_yticklabels调用get_yticks(),它几乎可以工作,但是您可以看到轴线延伸到图形的“表面”之外:

ax.set_yticks(range(len(yTicks)), True)
ax.set_yticklabels(ax.get_yticks(), verticalalignment='baseline',
               horizontalalignment='left')

无法使轴在MatPlotLib 3d上正确对齐 - python

5)这是我的代码的更完整版本,以供参考:

plt.clf()

ax = plt.axes(projection='3d')

ax.bar3d(x,y,z, 
     1,1,[val*-1 if val != 0 else 0 for val in z])

xTicks = list(range(0,25,2))
yTicks = list(range(30,90,5))

ax.set_zlim(0, 1)

ax.set_xticks(range(len(xTicks)), True)
ax.set_yticks(range(len(yTicks)), True)

ax.set_xticklabels(ax.get_xticks(), 
                verticalalignment='baseline',
                horizontalalignment='left')

ax.set_yticklabels(ax.get_yticks(), 
                verticalalignment='baseline',
                horizontalalignment='left')

plt.savefig(file_path)

如何获得以5的间隔显示我的全轴(0-90)并使其对齐的效果?

6)更新:根据下面与@ImportanceOfBeingErnest的对话,这是我仍在使用以下代码遇到的问题:

x=[15,28,20]; y=[30,50,80]; z=[1,1,1]

plt.clf()

ax = plt.axes(projection='3d')

ax.bar3d(x,y,z, 
         1,1,[val*-1 if val != 0 else 0 for val in z])

xTicks = list(range(0,25,2))
yTicks = list(range(30,90,5))
ax.set_xticks(xTicks)
ax.set_yticks(yTicks)

ax.set_yticklabels(ax.get_yticks(), 
                verticalalignment='baseline',
                horizontalalignment='left')

ax.set_zlim(0, 1)

plt.savefig(getSaveGraphPath(save_name))

无法使轴在MatPlotLib 3d上正确对齐 - python

python参考方案

如前所述,您可以通过ax.set_yticks设置刻度。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x=[15,28,20]; y=[30,50,80]; z=[1,1,1]

ax = plt.axes(projection='3d')

ax.bar3d(x,y,z, 
     1,1,[val*-1 if val != 0 else 0 for val in z])


yTicks = list(range(30,90,5))
ax.set_yticks(yTicks)

ax.set_yticklabels(ax.get_yticks(), 
                verticalalignment='baseline',
                horizontalalignment='left')

ax.set_zlim(0, 1)

plt.show()

这将在y轴上显示所需的5个单位步长。

无法使轴在MatPlotLib 3d上正确对齐 - python

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python:如何根据另一列元素明智地查找一列中的空单元格计数? - python

df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

将字符串分配给numpy.zeros数组[重复] - python

This question already has answers here: Weird behaviour initializing a numpy array of string data                                                                    (4个答案)         …

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…