Добавление функций модуля Питон на лист в LibreOffice Calc

Автор juceser, 31 марта 2025, 11:41

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

juceser

Вот есть код в модуле Питона который график строит -

with plt.style.context('ggplot'):
    plt.figure(figsize=(8, 4))
    plt.suptitle('Сглаженный график двух функций')
    plt.plot(X_, Y_, label=r'$y(x)$')
    plt.plot(X_, Z_, label=r'$z(x)$')
    plt.xlabel(r'$x$', fontsize=12)
    plt.ylabel(r'$f(x)$', fontsize=12)
    plt.legend(loc='best', fontsize=10);
    plt.show()

Как его на кнопку приткнуть?

Может я до этого не ясно как-то объяснял, извиняюсь тогда.

mikekaganski

Вы не только объясняете неясно (хотя понять в принципе можно). Самое главное - Вы не делаете Вашу часть работы.
Вы прикрепляете файлы с неправильным кодом. Код неправильный - его нельзя "на кнопку приткнуть". Вы пишете "Я уже отформатировал эту ошибку" - и опять не прикладываете исправленный файл. Ну так нет файла с правильным кодом, но где не получается назначить его на событие - нет и помощи.
С уважением,
Михаил Каганский

sokol92

Цитата: juceser от 31 марта 2025, 15:42Я уже отформатировал эту ошибку
Но мы видим, по-прежнему, старый вариант.

Цитата: juceser от 31 марта 2025, 15:31Интересно было бы посмотреть как это вообще привязывается, это же не процедура, не функция, а набор кода.
По нажатию кнопки будет вызываться процедура (подпрограмма, функция). Измените свой текст удобным для себя образом.
Владимир.

juceser

Посмотрите, пожалуйста. Сейчас при редактировании ошибок найдено не было.
При выборе кнопки можно теперь увидеть некоторые функции модуля Питон.
Получается что пока в коде где-то были ошибки он вообще ничего не показывал при назначении кнопки.
Об этом мне не было известно. VBA не так себя ведет.


juceser

По-прежнему пока неясно как работать с выводом команд, похожих на работу в интепретаторе -


Работа с DataFrame
Информация

df.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 19 entries, 0 to 18
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   x       19 non-null     float64
 1   y       19 non-null     float64
 2   g       19 non-null     float64
 3   z       19 non-null     float64
dtypes: float64(4)
memory usage: 760.0 bytes

Первые записи

df.head()

   x    y    g    z
0    -1.7    4.677369    1.378405    1.308333
1    -1.5    4.234381    1.303840    1.252763
2    -1.3    3.855986    1.224745    1.193922
3    -1.1    3.614309    1.140175    1.131402
4    -0.9    3.601079    1.048809    0.453596
Последние записи

df.tail()

   x    y    g    z
14    1.1    1.301703    2.017349    1.115142
15    1.3    1.068996    2.131938    1.266948
16    1.5    0.945114    2.240702    1.398717
17    1.7    0.852905    2.344684    1.515127
18    1.9    0.747829    2.444650    1.619388
Вывод с форматированием

df.style.background_gradient(cmap='Blues', axis=0).format("{:.3f}")

   x    y    g    z
0    -1.700    4.677    1.378    1.308
1    -1.500    4.234    1.304    1.253
2    -1.300    3.856    1.225    1.194
3    -1.100    3.614    1.140    1.131
4    -0.900    3.601    1.049    0.454
5    -0.700    3.889    0.949    0.267
6    -0.500    4.460    0.837    0.071
7    -0.300    5.123    0.707    -0.129
8    -0.100    5.516    0.548    -0.323
9    0.100    5.316    1.262    -0.598
10    0.300    4.521    1.457    0.049
11    0.500    3.450    1.620    0.438
12    0.700    2.460    1.764    0.718
13    0.900    1.740    1.895    0.936
14    1.100    1.302    2.017    1.115
15    1.300    1.069    2.132    1.267
16    1.500    0.945    2.241    1.399
17    1.700    0.853    2.345    1.515
18    1.900    0.748    2.445    1.619

bigor

Поддержать наш форум можно здесь


juceser

Куда Питон должен выводить работу данных команд? На лист? В отдельное окно интерпретатора?

juceser

В меню имеется еще пункт Python Shell - если его выбрать, то возникает ошибка, не связанная с кодом в модуле работы.
Странно, ранее у меня открывался этот shell, но ничего из команд в модуле все равно не понимал.

bigor

Опишу как я понимаю работу с python. Скрипт из документа , выполняется в встроенном в LO python, он ничего не знает о ваших pandas numpy итд. Что бы узнал ищите по форуму тему от economist, об установке дополнительных библиотек.
Поддержать наш форум можно здесь

juceser

Я так понимаю, первые команды модуля и импортируют эти библиотеки.

import math
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

Но, получается, это код в модуле никак не исполняется.


economist

ТС выбрал сложную "точку перегиба" для двух миров в виде кнопки с кодом. Кмк лучше так:

1) Ставим обычный python 3.12 с pandas jupyterlab matplotlib. Очень удобен и быстр uv вместо pip.

2) Пишем исследовательский код в браузере с автодополнением, справкой, даже в 4 руки, если надо быстро, с построением графиков в jupyterlab (промышленный стандарт, повторенный всеми, потому что лучше ничего нет).

3) Графики сохраняем в "кристальный" svg или предсказуемый png-формат типа: plt.savefig("график.svg", format="svg", transparent=True, bbox_inches="tight", inches=0) 

4) Полученные графики импортируем простым макросом в LibreOffice, примеры есть на нашем Форуме.

Почему так лучше, без шагов 3 и 4? Вы быстро обнаружите что ваш Блокнот Jupyter можно одной строкой кода превратить в 15 других форматов (HTML, PDF итд), в т.ч. с интерактивными графиками, или даже веб-приложение, что будет намного полезнее в деле массового распространения и доступности результатов вашего труда на любых устройствах.

Либра не умеет в интерактивность, ее нужно для этого кодить, а это в разы сложнее, чем Jupyter. Я видел уже десятки примеров выбора именно такого пути и подтверждаю его высочайшую эффективность и интересность.

Даже в прожженных корпорациях, где от сетки Excel выгорел экран, аналитики с радостью переходят на pandas/jupyter, в новый дивный мир гибридов кода, документации и визуализаций web-формата блокнота (json).

В данном случае освоение нового инструмента не распыление сил, а избегание острых углов экосистемы LibreOffice, где Python пока что на задворках (но ситуация плавно меняется, и вы к ней подготовитесь сами, если начнете сейчас). Ускорение освоения и реализации проектов (Python : LO BASIC) могу оценить как 4:1, ровно во столько раз проще всё отчетно-графиковое-дэшбордовое дается в JupyterLab.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...