В matplotlib, как вы рисуете тики оси R-стиля, указывающие наружу от осей?

Поскольку они нарисованы внутри области графика, тики оси затенены данными во многих графиках matplotlib. Лучший подход заключается в том, чтобы нарисовать тики, простирающиеся от осей наружу , а также по умолчанию в ggplot , системе построения R.

Теоретически это можно сделать, перерисовывая линии тика с помощью TICKDOWN и TICKLEFT x-оси и y-оси соответственно:

 import matplotlib.pyplot as plt import matplotlib.ticker as mplticker import matplotlib.lines as mpllines # Create everything, plot some data stored in `x` and `y` fig = plt.figure() ax = fig.gca() plt.plot(x, y) # Set position and labels of major and minor ticks on the y-axis # Ignore the details: the point is that there are both major and minor ticks ax.yaxis.set_major_locator(mplticker.MultipleLocator(1.0)) ax.yaxis.set_minor_locator(mplticker.MultipleLocator(0.5)) ax.xaxis.set_major_locator(mplticker.MultipleLocator(1.0)) ax.xaxis.set_minor_locator(mplticker.MultipleLocator(0.5)) # Try to set the tick markers to extend outward from the axes, R-style for line in ax.get_xticklines(): line.set_marker(mpllines.TICKDOWN) for line in ax.get_yticklines(): line.set_marker(mpllines.TICKLEFT) # In real life, we would now move the tick labels farther from the axes so our # outward-facing ticks don't cover them up plt.show() 

Но на практике это лишь половина решения, потому что get_xticklines и get_yticklines возвращают только основные get_yticklines линии. Маленькие тики продолжают указывать внутрь.

Какова обстановка для мелких клещей?

2 Solutions collect form web for “В matplotlib, как вы рисуете тики оси R-стиля, указывающие наружу от осей?”

В файле конфигурации matplotlib, matplotlibrc, вы можете установить:

 xtick.direction : out # direction: in or out ytick.direction : out # direction: in or out 

и по умолчанию это будут как основные, так и незначительные тики, например R. Для одной программы просто выполните:

 >> from matplotlib import rcParams >> rcParams['xtick.direction'] = 'out' >> rcParams['ytick.direction'] = 'out' 

Вы можете получить несовершеннолетних по крайней мере двумя способами:

 >>> ax.xaxis.get_ticklines() # the majors <a list of 20 Line2D ticklines objects> >>> ax.xaxis.get_ticklines(minor=True) # the minors <a list of 38 Line2D ticklines objects> >>> ax.xaxis.get_minorticklines() <a list of 38 Line2D ticklines objects> 

Обратите внимание, что 38 – это то, что в «крупных» местоположениях с помощью вызова MultipleLocator также были отображены небольшие тиковые линии.

Python - лучший язык программирования в мире.