Pyplot, выведите набор данных 2 на одну фигуру, пропустите часть оси Y - PullRequest
2 голосов
/ 25 июня 2011

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

EDIT:

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

graphic

Ответы [ 2 ]

1 голос
/ 25 июня 2011

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

Этот код создает следующий рисунок. enter image description here

0 голосов
/ 25 июня 2011

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

Output of script above

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...