powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
22 сообщений из 22, страница 1 из 1
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087554
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, я сделал Отчеты с Графиками, Таблицами , похожий на Jupyther Notebook.

Который можно использовать из обычного кода, типа как `println` стейтмент используется. Напечатать график, таблицу, или отчет.

Отличие от Jupyther Notebook в том что Этот Ноутбук можно использовать из любого обычного редактора типа идеи или вижл студио. И не нужно устанавливать никаких зависимостей, это просто html страничка, которую можно сохранить локально или опубликовать на любом сайте.

Пример как выглядит код для такого ноутбука, это Python (точнее Nim), для Java он будет выглядеть примерно так же. Можно вызвать из любого места программы и сгенерировать отчет.

Насколько это может быть нужно в Java? По идее Jupyther Notebook имеет кернел Java. Но мне лично он кажется менее удобным чем работа в скажем идее или вижл студии.

Какие инструменты анализа данных вы используете в Java? Eсть Java Kernel для Jupyther и еще различные варианты, в том числе плагины. Но интересно что именно вы реально использовали и что понравилось?
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087711
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал API для Groovy

Пример странички - онлайн и скриншот:



Groovy код который генерирует страничку выше

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
def page = new Page(title: 'Some page', desc: 'Some description')


page.text('Some text', """
Some formula \$E=mc^2\$

Some code `puts 'Hello World'`
""")


// Data as TidyData or Array or Column Array
def table_data = [
  [ name: 'Jim Raynor',   age: 30, hp: 250,  is_alive: true ],
  [ name: 'Angus Mengsk', age: 50, hp: 100,  is_alive: false ],
  [ name: 'Amon',                  hp: 500,  is_alive: true ]
]
page.table('Some table', table_data, [
  columns: [
    [ id: 'name' ],
    [ id: 'age' ],
    [ id: 'hp', format: [ type: 'line', ticks: [100] ] ],
    [ id: 'is_alive' ]
  ]
])


// Data as TidyData or Array or Column Array
chart_data = [
  a: [1, 2, 3,  4, 5],
  b: [1, 3, 2, -1, 2]
]
page.chart('Some chart', chart_data, [
  'bar',
  [ x: 'a', type: 'nominal' ],
  [ y: 'b' ]
])


// page.image('Some image', [
//   // Tiny black pixel encoded as base64 image.
//   // Also url could be supplied as `url: 'http://some-url'`.
//   base64: 'R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs='
// ])


// Saving report as HTML file, open it the Browser to see the Notebook
// You can publish Notebook by copying it to any Web Server
page.save('play.html')


// Optionally, you can publish Notebook on the http://pl0t.com site.
// You would need to get API Token from http://pl0t.com and store it as `plot_api_token` env variable
// The Notebook will be available as http://al6x.pl0t.com/groovy_test/page.json:view
// page.publish('http://al6x.pl0t.com/groovy_test/page.json')
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087741
Для формирования каких-нибудь отчётов может быть полезно. Но вообще, анализ данных на джаве то ещё извращение.
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087867
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Графики обычно требуют много дизайнерского подхода. Тоесть нарисовал в Excel.
Подвигал мышкой. Посмотрел. Перерисовал e.t.c.

Тоесть процесс - итеративный.

Сразу с нуля никто не может сделать векторный Chart так чтобы было красиво и цифры
шкалы или легенды не наползали друг на друга.

Программирование графиков может быть сколь угодно сложным или легким
но где-то в стеке должен быть принцип WYSIWYG.
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087871
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь принципиально другой подход, используется декларативная , визуальная грамматика Vega, точнее один из ее упрощенных диалектов (несколько похож на Альтаир).

Т.е. задается что мы хотим видеть, как это будет отображаться так чтобы ничего не обрезалось и не наползало решает визуальный движек Vega.

Из минусов - если кто дизайнер, он не сможет контролировать так как хочет видеть. Но если кто не дизайнер, то плюс что получится достаточно хорошо без навыков дизайна.

Примеры графиков (я попозже выложу эти примеры живыми, с кодом который их троит...)

...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087875
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДля формирования каких-нибудь отчётов может быть полезно. Но вообще, анализ данных на джаве то ещё извращение.Я использую его и для анализа и для продакшена.

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

Скорей это задачи получения и очистки данных, нормализации, различные источники и форматы хранения, простые расчеты, и визуализации типа гистограмы и других простых графиков.

И удобно когда не нужно ради этого переключаться на другой язык и другие инструменты, делать экспорт данных из продакшена в формат питоновского ноутбука юпитера, только ради того чтобы построить пару простых графиков и посмотреть как они выглядят. Когда это можно сделать прямо из жава продакшена так же как печать в консоль.
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087876
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я брошу на график количество точек, превышающих разрешение экрана по
горизонтали в текущем зуме - твой движок поймет что надо как-то интерполировать или
уменьшить объем отрисовки?
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087881
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, интерполирует.

Не могу похвастаться что это мой движек :). Это отличнейший, популярный, и много лет известный и используемый движек Vega. Я лишь добавил несколько упрощений, небольшую надстройку упрощающую его использование, что то типа Питоновского Альтаира (Альтаир это тоже надстройка над Vega) все графии которые там показаны можно сделать и тут, примерно с таким же синтаксисом. Либо, если кто знает Vega можно использовать ее оригинальную.
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087905
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private
Да, интерполирует.

Можешь показать на скрине?
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087972
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например http://inv6st.com/experiments/gold_price/7-plot.png

Если точки прыгают, соотв. график будет шумный, если они в одну линию, то они просто сольются в линию и их не будет видно.

Еще немного графиков http://inv6st.com/experiments/gold_price.html
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087974
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про интерполяцию наверно не совсем верно я сказал. Интерполировать график с "шумом" нельзя. И если библиотека графическая это делает, то это ошибка. Потому что это не шум, и убирать его нельзя. Например в графике с ценами, где за год скажем 10000 значений цены и все 9999 примерно одинаковые а одна сильно отличается, прыгает, это одно значение может быть самым ценной информацией, а 9999 ненужным шумом.
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087976
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сгладить график можно принудительно, сказав Веге что нужно включить интерполяцию, тогда она это сделает. https://vega.github.io/vega/docs/marks/line/
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087977
Интерполяция - эт когда между двумя точками дырка которую нужно заполнить. Т.е. мы определяем неизвестные точки между двумя известными. Когда же мы заменяем N точек на M где N > M, то хз как это называется. Я слышал о таком только под некрасивым именем bunching.

Хотя если честно я не понимаю зачем в случае "точки не влазят в экран" делать bunching - ну какие-то точки на одной X координате будут находиться. Не звучит как трагедия.

PS: я помню, кстати, был какой-то аналог Jupyther на Java..
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087978
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня что-то крутится в голове из инженерной графики. Может scaling. Может mip-mapping.
Но рендерить 100500 точек на одном графике точно не стоит. Нужен умный алгоритм прореживания.

Для нас ведь эти точки сливаются в толстую шумящую полосу.
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087980
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это называется сглаживание наверно, kernel density estimation и т.п. Автоматически его сделать невозможно, потому что это операция сжатия с потерей информации, и какую именно информацию нужно выкинуть аутлаеры или наоборот близкие значения зависит от цели исследования.
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40087992
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что график очень похож на свечные диаграммы. И возможно сами свечки возникли
как побочный эффект от сжатия с двух сторон во времени графика измеряемой величины.

Только не классическая свечка а диаграмма баров. Выглядит как такая полицейская палка.

Код: java
1.
2.
3.
4.
5.
 |
-|
 |
 |-
 |
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40088406
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил больше примеров графиков (картинки-карточки на заднем фоне). Все они построены этим же инструментом, только предыдущей версией.
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40088407
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылку забыл http://pl0t.com
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40089052
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наконец таки добавил API для Java https://github.com/al6x/pl0t/tree/main/api/java

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
import pl0t.Page;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Play {

  // Data class for table
  public static class Row {
    public String  name;
    public int     age;
    public int     hp;
    public boolean is_alive;

    public Row(String name, int age, int hp, boolean is_alive) {
      this.name = name; this.age = age; this.hp = hp; this.is_alive = is_alive;
    }
  }


  public static void main(String[] args) {
    Page page = new Page("Some page", "Some description");

    page.text("Some text",
      "Some formula $E=mc^2$\n" +
      "\n" +
      "Some code `puts 'Hello World'`"
    );


    // Data as TidyData or Array or Column Array
    Row[] table_data = {
      new Row("Jim Raynor",   30,    250, true),
      new Row("Angus Mengsk", 50,    100, false),
      new Row("Amon",         15000, 500, true),
    };
    // Flexible JSON used, you can omit quotes
    page.table("Some table", table_data,
      "{\n" +
      "  columns: [\n" +
      "    { id: name },\n" +
      "    { id: age },\n" +
      "    { id: hp, format: { type: line, ticks: [100] } },\n" +
      "    { id: is_alive }\n" +
      "  ]\n" +
      "}"
    );


    // Data as TidyData or Array or Column Array
    Map<String, List<Integer>> chart_data = new HashMap<>();
    chart_data.put("a", List.of(1, 2, 3,  4, 5));
    chart_data.put("b", List.of(1, 3, 2, -1, 2));
    // Flexible JSON used, you can omit quotes
    page.chart("Some chart", chart_data, "[\n" +
      "  bar,\n" +
      "  { x: a, type: nominal },\n" +
      "  { y: b }\n" +
      "]"
    );

    // Tiny black pixel encoded as base64 image.
    // page.image("Some image", "R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=");

    // Saving report as HTML file, open it the Browser to see the Notebook
    // You can publish Notebook by copying it to any Web Server
    page.save("play.html");
  }
}
...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40089053
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот Жава код построит вот такую страничку с графиками

...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40094656
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и наконец то, боль менее нормалный репорт, по австралийской недвиге.

Кстати отличный случай вспомнить статистику, статистика по недвиге гораздо интересней чем высчитывать размеры лепестков на классическом Iris flower data set.

Отчет открытый, можно запустить самостоятельно, поменять чтото, единственно он на Deno & TypeScript, но на Java/Kotlin перекладывается просто 1 к 1 :)

Отчет http://files.pl0t.com/experiments/ausprops/report-2021-08.html

...
Рейтинг: 0 / 0
Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
    #40094657
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и наконец то, боль менее нормалный репорт, по австралийской недвиге.

Кстати отличный случай вспомнить статистику, статистика по недвиге гораздо интересней чем высчитывать размеры лепестков на классическом Iris flower data set.

Отчет открытый, можно запустить самостоятельно, поменять чтото, единственно он на Deno & TypeScript, но на Java/Kotlin перекладывается просто 1 к 1, API на всех языках одно и тоже :)

Отчет http://files.pl0t.com/experiments/ausprops/report-2021-08.html

...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Нужна Java возможность печатать Графики, Таблицы? Как Jupyther Notebook?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]