Друкарня від WE.UA

Перетворення стилю графіків у науковий формат

Зміст

Всіх вітаю! У даній статті ми розглянемо бібліотеку SciencePlots, яка надає можливість перетворювати графіки на науковий формат. Саме у такому форматі графіки відображаються у різного роду наукових статтях і т. д.

Встановлення

Windows:

pip install SciencePlots

MacOS:

pip3 install SciencePlots

Linux:

pip install SciencePlots

Також для створення графіків нам необхідно буде встановити бібліотеку matplotlib. Команди для його встановлення доступні нижче.

Windows:

pip install matplotlib

MacOS:

pip3 install matplotlib

Linux:

pip install matplotlib

Використання бібліотеки SciencePlots

Підготовка даних та написання програми

Імпортуємо обидві бібліотеки:

import scienceplots
import matplotlib.pyplot as plt

У якоті даних візьмемо вартість біткоїна за 2025 рік:

bitcoin_prices = [102405.03, 84373.01, 82548.91, 94207.31, 104638.09, 107135.34, 115758.20, 108236.71, 114056.08,
                      109556.16, 90394.31, 87263.99]

bitcoin_prices_labels = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

Далі створюємо сам графік:

plt.plot(bitcoin_prices_labels, bitcoin_prices)
plt.title("Bitcoin prices in 2025")
    
plt.xlabel("Months")
plt.ylabel("Real prices ($)")
plt.show()

Ось повний код, нехай це буде функція simple_graph():

import scienceplots
import matplotlib.pyplot as plt


def simple_graph():
    bitcoin_prices = [102405.03, 84373.01, 82548.91, 94207.31, 104638.09, 107135.34, 115758.20, 108236.71, 114056.08,
                      109556.16, 90394.31, 87263.99]

    bitcoin_prices_labels = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",  "Aug", "Sep", "Oct", "Nov", "Dec"]

    plt.plot(bitcoin_prices_labels, bitcoin_prices)
    plt.title("Bitcoin prices in 2025")

    plt.xlabel("Months")
    plt.ylabel("Real prices ($)")
    plt.show()


simple_graph()

Тепер запустимо код, щоб спочатку побачити графік без якихось стилів:

Початковий графік

Базові стилі

Стиль science

Отже, спершу ми розглянемо стиль science, але без шрифту latex. Для цього, нам треба вказати його як основний стиль для нашого графіка — це можна зробити за допомогою пакета style та функції use().

Ось приклад коду, завдяки якому ми встановлюємо стилі:

plt.style.use(["science", "no-latex"])

У функції use() вказуємо один або декілька стилів. Якщо ми поєднуємо декілька стилів в одному графіку, то ми повинні записати їх у вигляді списку.

Таким чином, наш повний код тепер виглядає так:

import scienceplots
import matplotlib.pyplot as plt


def simple_graph():
    plt.style.use(["science", "no-latex"])

    bitcoin_prices = [102405.03, 84373.01, 82548.91, 94207.31, 104638.09, 107135.34, 115758.20, 108236.71, 114056.08, 109556.16, 90394.31, 87263.99]

    bitcoin_prices_labels = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

    plt.plot(bitcoin_prices_labels, bitcoin_prices)
    plt.title("Bitcoin prices in 2025")

    plt.xlabel("Months")
    plt.ylabel("Real prices ($)")
    plt.show()


simple_graph()

Тепер запускаємо код:

Стиль science + no-latex

Стиль ieee

Даний стиль робить графік чорно-білим.

plt.style.use(["ieee", "no-latex"])

Також слід зробити ще одну важливу зміну, коли використовуємо саме стиль ieee. Справа у тому, що цей стиль не працює коректно лише із звичною функцією show(), тому нам треба записати цей код:

plt.rcParams.update(
        {"figure.dpi": "100"}

Даний код допомагає нам правильно налаштувати графік, бо без нього ми іноді можемо отримувати графік занадто великого розміру. Взагалі формат ieee розроблений спеціально під наукові журнали, і через це зазамовчуванням створює графік з дуже малими розмірами. Середовище розробки у свою чергу намагається розтягнути графік, але це лише спотворює його.

Проте, якщо ми задамо 100 точок на дюйм (зветься DPI), то графік перетворюється на більшу кількість пікселів, що й покращує якість зображення.

Отримуємо такий графік:

Стиль notebook

Це стиль, який використовується у середовиші розробки Jupyter Notebook.

Вказуємо його:

plt.style.use(["notebook"])

Отримуємо такий формат:

Стиль notebook

Стиль nature

Цей стиль використовується для графіків у відомому науковому журналі Nature.

Зазначаємо стиль:

plt.style.use(["nature"])

Ось результат:

Стиль nature

Стиль grid

Даний стиль просто додає сітку на наш графік.

Вказуємо у коді:

plt.style.use(["grid"])

Маємо такий графік:

Поєднання стилів

Стиль science + no-latex + grid

Нижче наведений приклад поєднання grid зі стилями science та no-latex:

plt.style.use(["science", "no-latex", "grid"])

Як бачимо, ми змінюємо лише рядок зі стилем, просто додаючи до вже прописаних стилів стиль grid.

Ось який вигляд буде мати наш графік:

Стилі science + no-latex + grid

Стиль science + no-latex + notebook

Знову-таки додаємо стиль у коді:

plt.style.use(["science", "no-latex", "notebook"])

Запускаємо код і отримуємо такий графік:

Стилі science + no-latex + notebook

Стиль science + no-latex + nature

Зміна стилів у коді:

plt.style.use(["science", "no-latex", "nature"])

Результат:

Стилі science + no-latex + nature

Стиль science + no-latex + ieee

Тепер додамо стиль ieee до science та no-latex:

plt.style.use(["science", "no-latex", "ieee"])

Далі йде важлива частина — нам треба чітко вказати не тільки кількість точок на дюйм, але й шрифт. Справа у тому, що стиль ieee вимагає саме шрифт Times New Roman, причому шукає він його за назвою Times, але шрифту з такою назвою дійсно немає.

Єдиний вихід з цієї ситуації — це чітко зазначити, що нам треба саме шрифт Times New Roman, що ми й робимо.

Тому на додаток до DPI записуємо ще й шрифт:

plt.rcParams.update(
        {
            "font.family": "serif",
            "font.serif": "Times New Roman",
            "figure.dpi": "100",
        }
    )

Результат:

Стилі science + no-latex + ieee

Висновок

У рамках даної статті ми ознайомилися з різними можливими стилями графіків, які нам надає бібліотека SciencePlots. Тож відтепер ми зможемо стилізувати графіки під відповідні критерії. Дякую за увагу!

Список джерел
  1. Ціни біткоїна за роками

Статті про вітчизняний бізнес та цікавих людей:

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Mystique Lord
Mystique Lord@nocturnal_reader we.ua/nocturnal_reader

Нічний читач

41Довгочити
467Прочитання
13Підписники
Підтримати
На Друкарні з 14 липня

Більше від автора

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: