2016-09-12 3 views
0

У меня есть простой сюжет, выполненный с использованием matplotlib. Мои оси x и y начинаются с 0,0 соответственно. График matplotlib показывает 2 нуля, соответствующих двум осям. Я хочу только один ноль (если возможно, где-то посередине начальной точки). Как это можно сделать?Одиночное значение начала для python matplotlib plot

Вот что я использовал:

import matplotlib.pyplot as plt 

plt.plot([1,2,3], [4,5,6]) 
plt.xlim([0,5]) 
plt.ylim([0,10]) 
plt.show() 

Matplotlib Plot

UPDATE:

Я использовал решение @nostradamus' и избавилась от одного из нулей. Я хочу, чтобы ноль был немного центрирован, если это возможно.

я использовал:

plt.gca().xaxis.set_major_locator(MaxNLocator(prune='lower')) 
plt.gca().yaxis.get_majorticklabels()[0].set_x(-0.05) 

enter image description here

Я хочу реверс этого. Я хочу, чтобы ноль на оси y двигался вниз или один от оси x слева. Так, например:

plt.gca().yaxis.set_major_locator(MaxNLocator(prune='lower')) 
plt.gca().xaxis.get_majorticklabels()[0].set_x(-0.05) 

Не работает. Я думаю, что нижняя и левая границы для нулей установлены так, чтобы они не выходили за пределы области.

ответ

1

Ключевое слово prune, который позволяет убить upper, lower или both клеща этикетки. Вот такие рабочие примеры, которые избавляются от 0 по оси х:

import matplotlib.pyplot as plt 
from matplotlib.ticker import MaxNLocator 

plt.plot([1,2,3], [4,5,6]) 
plt.xlim([0,5]) 
plt.ylim([0,10]) 
plt.gca().xaxis.set_major_locator(MaxNLocator(prune='lower')) 
plt.show() 

Вторая части (чтобы переместить оставшийся ноль в углу), кажется, гораздо сложнее. Кажется, что вы можете перемещать отдельные клеща этикетки с помощью

plt.gca().yaxis.get_majorticklabels()[0].set_x(-0.05) 

Однако я не смог понять, как переместить его ниже нижнего предела соответствующей оси (т.е. plt.gca().yaxis.get_majorticklabels()[0].set_y(-0.05) не делает ничего).

+0

Большое спасибо. Я не знал о «черносливе». И да, кажется, действительно сложно редактировать графики, созданные с помощью pyplot –