общие оси на точечных диаграммах в matplotlib - PullRequest
1 голос
/ 22 марта 2012

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

#!/usr/bin/python

import matplotlib.pyplot as plt

fig = plt.figure(1)
for i in range(1,3):
    if i == 1:
        ax = fig.add_subplot(1,2,i)
    else:
        fig.add_subplot(1,2,i, sharey=ax)

    #plt.plot([5.0], [1],marker="*",color='tomato')
    plt.scatter([5.0], [1], s=20, color='tomato')

plt.show()

[Я включил бы изображения, но сайт не позволил бы мне стать новичком.] Когда я запускаю приведенный выше код, я вижу графики с осью Y, которая проходит от 0,0000 до 0,0008 с нанесением одной точкина 0,0004.Без общих осей ось Y переходит от 0,94 до 1,06 с одной точкой, нанесенной на 1,00, как и ожидалось.

Может кто-нибудь сказать мне, почему?Это ошибка или функция?

matplotlib: 0.99.1.2-3ubuntu в Ubuntu 10.04 LTS - Lucid Lynx

1 Ответ

0 голосов
/ 23 марта 2012

У меня нет ответа на вопрос «почему», но вот как от него избавиться: в вашем фрагменте кода, дать scatter три точки для рисования

plt.scatter([1.0,2,3], [1.1,2.2,2.9], s=20, color='tomato')

мне подходит (matplotlib 1.1.0 на Lucid).

Я могу только догадываться, что scatter пытается быть немного умнее, чем plot с ограничениями по осям, но что бы он ни делал, он сходит с ума только для одной точки.

...