Я рисую в разные наборы данных в один граф с pylab.plot(), который отлично работает. Но один набор данных имеет значения от 0% до 25%, а другой - от 75% до 100%. Я хочу пропустить 30% до 70% по оси Y, чтобы сэкономить место. Есть ли у вас какие-либо предложения, как это может работать с pyplot?
РЕДАКТИРОВАТЬ:
Для ясности я добавил следующий рисунок. Я хочу пропустить 30% -60% по оси y, так что красная линия и зеленая линия сближаются.
Решение основано на сообщении Space_C0wb0ys.
fig = pylab.figure()
ax = fig.add_subplot(111)
ax.plot( range(1,10), camean - 25, 'ro-' )
ax.plot( range(1,10), oemean , 'go-' )
ax.plot( range(1,10), hlmean , 'bo-' )
ax.set_yticks(range(5, 60, 5))
ax.set_yticklabels(["5","10","15","20","25","30","...","65","70","75"])
ax.legend(('ClassificationAccuracy','One-Error','HammingLoss'),loc='upper right')
pylab.show()
Этот код создает следующую графику.
Вы можете вычесть 40 из значений x для ваших вторых функций, чтобы сделать диапазон значений x непрерывным. Это даст вам диапазон от 0% до 70%. Затем вы можете установить тики и лабораторные объекты оси x следующим образом:
x_ticks = range(71, 0, 10)
a.set_xticks(x_ticks)
a.set_xticklabels([str(x) for x in [0, 10, 20, 30, 70, 80, 90, 100]])
Где a
- текущие оси. Таким образом, вы строите свои функции в диапазоне от 0% до 70%, но обозначаете ось пробелом.
Для иллюстрации - следующий скрипт:
from numpy import arange
import matplotlib.pyplot as plt
x1 = arange(0, 26) # first function
y1 = x1**2
x2 = arange(75, 100) # second function
y2 = x2*4 + 10
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x1, y1)
ax.plot(x2 - 40, y2) # shift second function 40 to left
ax.set_xticks(range(0, 61, 5)) # set custom x-ticks
# set labels for x-ticks - labels have the gap we want
ax.set_xticklabels([str(x) for x in range(0, 26, 5) + range(70, 101, 5)])
plt.show()
Производит следующий график (обратите внимание на x-метки):