Spec-Zone.ru › Kotlin 2

Форматы вывода, поддерживаемые Kotlin Notebook

Начиная с IntelliJ IDEA 2026.2, Kotlin Notebook больше не будет входить в состав IDE и официально поддерживаться JetBrains. Исходный код останется доступен на GitHub.

Подробнее читайте в публикации в блоге.

Kotlin Notebook поддерживает различные типы вывода, включая текст, HTML и изображения. С помощью внешних библиотек можно расширить набор вариантов вывода и визуализировать данные с помощью диаграмм, электронных таблиц и других средств.

Каждый результат представляет собой объект JSON, который сопоставляет тип MIME Jupyter с некоторыми данными. Из этой карты Kotlin Notebook выбирает поддерживаемый тип MIME с наивысшим приоритетом среди остальных типов и отображает его следующим образом:

  • Текст использует тип MIME text/plain.

  • Класс BufferedImage использует тип MIME image/png, которому соответствует строка Base64.

  • Класс Image, а также формат LaTeX используют тип MIME text/html с тегом img внутри.

  • Таблицы Kotlin DataFrame и графики Kandy используют собственные внутренние типы MIME, за которыми стоят статические HTML-страницы или изображения. Благодаря этому их можно отображать на GitHub.

Можно настроить сопоставление вручную, например, чтобы использовать Markdown в качестве вывода ячейки:

MimeTypedResult(
    mapOf(
        "text/plain" to "123",
        "text/markdown" to "# HEADER",
        //other mime:value pairs
    )
)

Чтобы отобразить любой тип вывода, используйте функцию DISPLAY(). Она также позволяет объединять несколько результатов:

DISPLAY(HTML("<h2>Gaussian distribution</h2>"))
DISPLAY(LATEX("f(x) = \\frac{1}{\\sigma \\sqrt{2\\pi}} \\cdot e^{-\\frac{(x - \\mu)^2}{2\\sigma^2}}"))

val experimentX = experimentData.map { it.key }
val experimentY = experimentData.map { it.value }

DISPLAY(plot {
    bars {
        x(experimentX)
        y(experimentY)
    }
})
Different outputs for Gaussian distribution

Текст

Обычный текст

Самый простой тип вывода — обычный текст. Он используется для печати сообщений, значений переменных и любых других текстовых результатов выполнения кода:

val a1: Int = 1
val a2: Int = 2
var a3: Int? = a1 + a2

"My answer is $a3"
Plain text code output
  • Если результат ячейки невозможно визуализировать и отобразить в любом из типов вывода, он будет выведен как обычный текст с помощью функции toString().

  • Если в коде есть ошибки, Kotlin Notebook отображает сообщение об ошибке и трассировку стека, которые помогут найти и устранить проблему.

Форматированный текст

Чтобы использовать форматированный текст, выберите ячейки типа Markdown. Так можно форматировать содержимое с помощью разметки Markdown и HTML, используя списки, таблицы, стили шрифта, блоки кода и другие элементы. HTML может содержать стили CSS и JavaScript.

## Line magics

| Spell                              | Description                                                                                                      | Example                                                                               |
|------------------------------------|------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|
| <code>%use</code>                  | Injects code for supported libraries: artifact resolution, default imports, initialization code, type renderers. | <code>%use klaxon(5.5), lets-plot</code>                                              |                                         
| <code>%trackClasspath</code>       | Logs any changes of current classpath. Useful for debugging artifact resolution failures.                        | <code>%trackClasspath [on |off]</code>                                                |
| <code>%trackExecution</code>       | Logs pieces of code that are going to be executed. Useful for debugging of libraries support.                    | <code>%trackExecution [all|generated|off]</code>                                      |          
| <code>%useLatestDescriptors</code> | Use latest versions of library descriptors available. By default, bundled descriptors are used.                  | <code>%useLatestDescriptors [on|off]</code>                                           |
| <code>%output</code>               | Output capturing settings.                                                                                       | <code>%output --max-cell-size=1000 --no-stdout --max-time=100 --max-buffer=400</code> |
| <code>%logLevel</code>             | Set logging level.                                                                                               | <code>%logLevel [off|error|warn|info|debug]</code>                                    |

<ul><li><a href="https://github.com/Kotlin/kotlin-jupyter/blob/master/docs/magics.md">Learn more detailes about line magics</a>.</li>
<li><a href="https://github.com/Kotlin/kotlin-jupyter/blob/master/docs/magics.md">See the full list of supported libraries</a>.</li></ul>
Rich text in Markdown cells

HTML

Kotlin Notebook может отображать HTML напрямую, выполнять скрипты и даже встраивать веб-сайты:

HTML("""
<p>Counter: <span id="ctr">0</span> <button onclick="inc()">Increment</button></p>
<script>
    function inc() {
        let counter = document.getElementById("ctr")
        counter.innerHTML = parseInt(counter.innerHTML) + 1;
}
</script>
""")
Using HTML script

Чтобы выполнять скрипты, пометьте блокнот как Доверенный в верхней части файла.

Изображения

В Kotlin Notebook можно отображать изображения из файлов, созданные графики и другие визуальные материалы. Статические изображения можно отображать в таких форматах, как .png, jpeg и .svg.

Буферизованные изображения

По умолчанию для отображения изображений можно использовать класс BufferedImage:

import java.awt.Color
import java.awt.image.BufferedImage

val width = 300
val height = width

val image = BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB)

val graphics = image.createGraphics()
graphics.background = Color.BLACK
graphics.clearRect(0, 0, width, height)
graphics.setRenderingHint(
    java.awt.RenderingHints.KEY_ANTIALIASING,
    java.awt.RenderingHints.VALUE_ANTIALIAS_ON
)
graphics.color = Color.WHITE
graphics.fillRect(width / 10, height * 8 / 10, width * 10 / 20, height / 10)
graphics.dispose()
Using default BufferedImage to display images

Загруженные изображения

С помощью библиотеки lib-ext можно расширить стандартные возможности Jupyter и отображать изображения, загруженные из сети:

%use lib-ext(0.11.0-398)
Image("https://kotlinlang.org/docs/images/kotlin-logo.png", embed = false).withWidth(300)
Using external image links

Встроенные изображения

Недостаток изображений, загруженных из сети, заключается в том, что они исчезают, если ссылка перестаёт работать или теряется подключение к сети. Чтобы избежать этого, используйте встроенные изображения, например:

val kotlinMascot = Image("https://blog.jetbrains.com/wp-content/uploads/2023/04/DSGN-16174-Blog-post-banner-and-promo-materials-for-post-about-Kotlin-mascot_3.png", embed = true).withWidth(400)
kotlinMascot
Using embedded images

Математические формулы и уравнения

Математические формулы и уравнения можно отображать в формате LaTeX — системе вёрстки, широко используемой в академической среде:

  1. Добавьте в блокнот библиотеку lib-ext, расширяющую функциональность ядра Jupyter:

    %use lib-ext(0.11.0-398)
    
  2. В новой ячейке выполните формулу:

    LATEX("c^2 = a^2 + b^2 - 2 a b \\cos\\alpha")
    
    Using LaTeX to render mathematical formulas

Датафреймы

В Kotlin Notebook можно визуализировать структурированные данные с помощью датафреймов:

  1. Добавьте в блокнот библиотеку Kotlin DataFrame:

    %use dataframe
    
  2. Создайте датафрейм и выполните его в новой ячейке:

    val months = listOf(
        "January", "February",
        "March", "April", "May",
        "June", "July", "August",
        "September", "October", "November",
        "December"
    )
    
    // Sales data for different products and months:
    val salesLaptop = listOf(120, 130, 150, 180, 200, 220, 240, 230, 210, 190, 160, 140)
    val salesSmartphone = listOf(90, 100, 110, 130, 150, 170, 190, 180, 160, 140, 120, 100)
    val salesTablet = listOf(60, 70, 80, 90, 100, 110, 120, 110, 100, 90, 80, 70)
    
    // A data frame with columns for Month, Sales, and Product
    val dfSales = dataFrameOf(
        "Month" to months + months + months,
        "Sales" to salesLaptop + salesSmartphone + salesTablet,
        "Product" to List(12) { "Laptop" } + List(12) { "Smartphone" } + List(12) { "Tablet" },
    )
    

    В датафрейме используется функция dataFrameOf(). В нём указано количество товаров (ноутбуков, смартфонов и планшетов), проданных за 12 месяцев.

  3. Исследуйте данные в датафрейме, например, найдите товар и месяц с наибольшим объёмом продаж:

    dfSales.maxBy("Sales")
    
    Using DataFrame to visualize data
  4. Можно также экспортировать датафрейм в файл CSV:

    // Export your data to CSV format
    dfSales.writeCSV("sales-stats.csv")
    

Диаграммы

В Kotlin Notebook можно создавать различные диаграммы для визуализации данных:

  1. Добавьте в блокнот библиотеку для построения графиков Kandy:

    %use kandy
    
  2. Используйте тот же датафрейм и выполните функцию plot() в новой ячейке:

    val salesPlot = dfSales.groupBy { Product }.plot {
        bars {
            // Access the data frame's columns used for the X and Y axes
            x(Month)
            y(Sales)
            // Access the data frame's column used for categories and sets colors for these categories
            fillColor(Product) {
                scale = categorical(
                    "Laptop" to Color.PURPLE,
                    "Smartphone" to Color.ORANGE,
                    "Tablet" to Color.GREEN
                )
                legend.name = "Product types"
            }
        }
        // Customize the chart's appearance
        layout.size = 1000 to 450
        layout.title = "Yearly Gadget Sales Results"
    }
    
    salesPlot
    
    Using Kandy to render visualize data
  3. Можно также экспортировать график в формате .png, jpeg, .html или .svg:

    // Specify the output format for the plot file:
    salesPlot.save("sales-chart.svg")
    

Что дальше

  • Визуализируйте данные с помощью библиотек DataFrame и Kandy

  • Подробнее о визуализации и отображении форматированного вывода в Kotlin Notebook

  • Получайте данные из файлов CSV и JSON

  • Ознакомьтесь со списком рекомендуемых библиотек

29 июня 2026
Поделитесь блокнотом Kotlin NotebookОбзор коллекций

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/data-analysis-notebooks-output-formats.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API