tiempo real matrices graficos graficas graficar coordenadas python matplotlib plot

python - real - En matplotlib, ¿cómo dibuja tramos de ejes de estilo R que apuntan hacia afuera desde los ejes?



python graficos 2d (2)

En su archivo de configuración matplotlib, matplotlibrc, puede configurar:

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

y esto hará que las marcas principales y secundarias salgan de forma predeterminada, como R. Para un solo programa, simplemente haga:

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

Debido a que se dibujan dentro del área de trazado, las marcas de los ejes quedan ocultas por los datos en muchos de los gráficos de matplotlib. Un mejor enfoque es dibujar las marcas que se extienden desde los ejes hacia afuera , como es el valor predeterminado en ggplot , el sistema de trazado de R.

En teoría, esto se puede hacer redibujando las líneas de tictac con los TICKLEFT línea TICKDOWN y TICKLEFT para las TICKLEFT del eje x y el eje y, respectivamente:

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()

Pero en la práctica, eso es solo la mitad de la solución porque los métodos get_xticklines y get_yticklines solo devuelven las principales líneas de tictac. Las garrapatas menores siguen apuntando hacia adentro.

¿Cuál es la solución alternativa para las garrapatas menores?


Puede obtener a los menores en al menos dos formas:

>>> 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>

Tenga en cuenta que el 38 se debe a que la llamada MultipleLocator también dibujó líneas secundarias menores en las ubicaciones "principales".