Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Python, скрипт для QtiPlot  (Прочитано 975 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Python, скрипт для QtiPlot
« : 12 Марта 2012, 19:56:29 »
Программировать я вообще не умею, но пытаюсь научиться понемногу. Для начала решил написать простой скрипт для QtiPlot, чтобы определить все столбцы в таблице как X и Y по очереди: первый X, второй Y, третий X, четвертый Y и так далее. Написал такой скрипт:
t = currentTable()
j = t.numCols()+1
for i in range(1, j):
if t.columnRole(i-1) == '1':
t.setColumnRole(i, 2)
else:
t.setColumnRole(i, 1)

Но программа выдает ошибку:

#> <type 'AttributeError'>: 'Table' object has no attribute 'columnRole'
#> at <>:4 in <module>
#>

Как я понял, она не узнает аттрибут columnRole для таблицы (t). Но почему? В мануале (http://soft.proindependent.com/doc/manual-en/x6311.html#Python-DataAnalysis) написано:
Цитировать
You can change the plot role (abscissae, ordinates, error bars, etc...) of a table column col using:

t.setColumnRole(col, role)
print t.columnRole(col)

where rolespecifies the desired column role:

0.

    Table.None
1.

    Table.X
2.

    Table.Y
3. и так далее...

Что ей может не нравиться?

И правильно ли я вообще идейно написал это? А то спросить не у кого, к сожалению...  :'(
Ubuntu 14.04 (Unity), MSI GE40

andrey_p

  • Гость
Re: Python, скрипт для QtiPlot
« Ответ #1 : 13 Марта 2012, 06:25:05 »
Написано правильно (насколько можно судить из фрагмента), предположение тоже правильное - таблица не имеет атрибута ColumnRole. Можно предположить, что до установки (вызова setColumnRole), его не существует. Но это гадание, точно может ответить только человек, знающий qtiplot.

PS Вчера натолкнулся на бесплатный курс по Питону для начинающих - здесь. Мне понравилось. Там паровоз немного уже убежал (курсы где-то месяц назад начались), но догнать вроде можно.

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Python, скрипт для QtiPlot
« Ответ #2 : 13 Марта 2012, 07:12:02 »
Ясно...
Цитировать
Можно предположить, что до установки (вызова setColumnRole), его не существует.
Было бы странно, ведь у всех столбцов, кроме первого, при создании таблицы, по идее аттрибут Y... По крайней мере, так они подписаны на таблице...
К сожалению, разработчик оказывает только платную поддержку, я пробовал у него спрашивать...

Цитировать
PS Вчера натолкнулся на бесплатный курс по Питону для начинающих - здесь. Мне понравилось. Там паровоз немного уже убежал (курсы где-то месяц назад начались), но догнать вроде можно.
Спасибо!
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Phlya

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Python, скрипт для QtiPlot
« Ответ #3 : 16 Марта 2012, 02:21:37 »
Решил продолжить учиться программировать, также пишу скрипт для QtiPlot, именно этот навык может пригодиться.
Пишу скрипт для рисования фазового портрета системы двух обыкновенных диффуров.
Буду рад, если кто-нибудь намекнет, в какую сторону думать, чтобы получить несколько траекторий, но не тупым добавлением на каждую нужную траектории еще одного столбца, а как-нибудь поумнее (можно, чтобы он как-то сам добавлялся в зависимости от того, сколько траекторий я укажу нарисовать - переменная такая хорошо бы была...), потому что хочу, чтобы это можно было легко настроить. (Рисовать одну траекторию я уже научился и, кажется, правильно, буду рад, если кто-нибудь проверит!)
И, главное, почему QtiPlot может ругаться на Invalid syntax в таком куске скрипта?
for i in range (1, steps + 1):
t.setCell(5, -a / b * t.cell('I', i), minX , maxX, points = 100)
for i in range (1, steps+1):
t.setCell(6, -c / d * t.cell('I', i), minX , maxX, points = 100)
Вот так ругается:
#> for i in range (1, steps + 1):
#>
#>                              ^
#> SyntaxError: invalid syntax
#> at <>:52
#>
(У нее указатель стоит напротив steps, тут сбилось).
При этом в самом начале скрипта

steps = 3000
И в других местах на абсолютно такой же код не ругается...
Написал это место по-другому, странная ошибка пропала.

(Во вложении весь скрипт - обновленный)
« Последнее редактирование: 16 Марта 2012, 11:20:42 от Phlya »
Ubuntu 14.04 (Unity), MSI GE40

 

Страница сгенерирована за 0.046 секунд. Запросов: 25.