Pyplot, выведите набор данных 2 на одну фигуру, пропустите часть оси Y

1

Я рисую в разные наборы данных в один граф с pylab.plot(), который отлично работает. Но один набор данных имеет значения от 0% до 25%, а другой - от 75% до 100%. Я хочу пропустить 30% до 70% по оси Y, чтобы сэкономить место. Есть ли у вас какие-либо предложения, как это может работать с pyplot?

РЕДАКТИРОВАТЬ:

Для ясности я добавил следующий рисунок. Я хочу пропустить 30% -60% по оси y, так что красная линия и зеленая линия сближаются.

Изображение 174551

Теги:
matplotlib

2 ответа

1
Лучший ответ

Решение основано на сообщении 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()

Этот код создает следующую графику. Изображение 174551

  • 0
    Мое решение, очевидно, не было правильным. Поскольку вы нашли правильное решение самостоятельно, вы также можете принять это. Это прекрасно.
0

Вы можете вычесть 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-метки):

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню