Установка тиковых цветов для сюжета matplotlib 3D - PullRequest
0 голосов
/ 30 ноября 2018

Если у меня есть 3D-график Matplotlib (объект Axes3D), как мне изменить цвет отметок?Я выяснил, как изменить цвет линии оси, меток галочки и метки оси.Очевидное решение, использующее ax.tick_params(axis='x', colors='red'), изменяет только метки, а не сами отметки.

Вот код, который пытается изменить все оси на красный и получает все, кроме отметок:

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

fig = plt.figure()
ax = Axes3D(fig)

ax.scatter((0, 0, 1), (0, 1, 0), (1, 0, 0))
ax.w_xaxis.line.set_color('red')
ax.w_yaxis.line.set_color('red')
ax.w_zaxis.line.set_color('red')
ax.w_zaxis.line.set_color('red')
ax.xaxis.label.set_color('red')
ax.yaxis.label.set_color('red')
ax.zaxis.label.set_color('red')
ax.tick_params(axis='x', colors='red')  # only affects
ax.tick_params(axis='y', colors='red')  # tick labels
ax.tick_params(axis='z', colors='red')  # not tick marks

fig.show()

enter image description here

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Простой способ достижения ожидаемого результата заключается в следующем:

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

rcParams['xtick.color'] = 'red'
rcParams['ytick.color'] = 'red'
rcParams['axes.labelcolor'] = 'red'
rcParams['axes.edgecolor'] = 'red'

fig = plt.figure()
ax = Axes3D(fig)

ax.scatter((0, 0, 1), (0, 1, 0), (1, 0, 0))
plt.show()

Вывод на экран:

enter image description here

0 голосов
/ 30 ноября 2018

Как упоминалось на странице справки о tick_params(axis='both', **kwargs), вы получаете ошибку:

Хотя эта функция в настоящее время реализована, базовая часть объекта Axes3D может игнорировать некоторые изэти настройки.Будущие выпуски исправят это.Приоритет будет отдан тем, кто регистрирует ошибки.

Чтобы преодолеть эту проблему, используйте внутренний словарь _axinfo, как в этот пример :

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

fig = plt.figure()
ax = fig.gca(projection='3d')

ax.scatter((0, 0, 1), (0, 1, 0), (1, 0, 0))

ax.xaxis._axinfo['tick']['color']='r'
ax.yaxis._axinfo['tick']['color']='r'
ax.zaxis._axinfo['tick']['color']='r'
plt.show()

enter image description here

...