2013-04-02 2 views
6

Предположим, у меня есть функция построения графика, которая принимает аргумент осей (или возвращает один). Есть ли какой-то низкоуровневый метод для переноса всего графика, так что ось х становится осью у и наоборот? Или даже оси перед графикой, чтобы функция построения графика делала все правильно (маркировку), опираясь на функции осей?python matplotlib: путь к транспонированию осей

Я знаю, как это сделать «вручную», но мне интересно, есть ли скрытый уровень абстракции, который допускает такое преобразование.

+1

какие художники у вас на ваших осей? – tacaswell

+1

Хороший вопрос, я думаю, я мог быть конкретным и упомянуть, что я думаю о функции графика gfx, прикрепленной к объектам серии Pandas (и DataFrame) (через dataframe.plot() ...). Я просмотрю код и попытаюсь получить более подробную информацию позже, если вы не знакомы с функцией графика panadas. – mathtick

+0

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

ответ

6

old post (около 2005 г.) в список рассылки от John Hunter. Я подозреваю, что это достаточно редкое желание и достаточно сложное, чтобы это не было добавлено. Пример

Джона Хантера для замены осей на существующих делянки

line2d = plot(rand(10))[0] 

def swap(xdata, ydata): 
    line2d.set_xdata(ydata) 
    line2d.set_ydata(xdata) 
    draw() 

swap(line2d.get_xdata(), line2d.get_ydata()) 
0

не более чем обертка для ответа tcaswell в.

def swap(*line_list): 
    """ 
    Example 
    ------- 
    line = plot(linspace(0, 2, 10), rand(10)) 
    swap(line) 
    """ 
    for lines in line_list: 
     try: 
      iter(lines) 
     except: 
      lines = [lines] 

     for line in lines: 
      xdata, ydata = line.get_xdata(), line.get_ydata() 
      line.set_xdata(ydata) 
      line.set_ydata(xdata) 
      line.axes.autoscale_view() 

Пример

line = plot(linspace(0, 2, 10), rand(10)) 
swap(line) 
Смежные вопросы