Всіх вітаю! У даній статті ми розглянемо бібліотеку SciencePlots, яка надає можливість перетворювати графіки на науковий формат. Саме у такому форматі графіки відображаються у різного роду наукових статтях і т. д.
Встановлення
Windows:
pip install SciencePlotsMacOS:
pip3 install SciencePlotsLinux:
pip install SciencePlotsТакож для створення графіків нам необхідно буде встановити бібліотеку matplotlib. Команди для його встановлення доступні нижче.
Windows:
pip install matplotlibMacOS:
pip3 install matplotlibLinux:
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()Тепер запускаємо код:

Стиль 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"])Отримуємо такий формат:

Стиль nature
Цей стиль використовується для графіків у відомому науковому журналі Nature.
Зазначаємо стиль:
plt.style.use(["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 + notebook
Знову-таки додаємо стиль у коді:
plt.style.use(["science", "no-latex", "notebook"])Запускаємо код і отримуємо такий графік:

Стиль science + no-latex + nature
Зміна стилів у коді:
plt.style.use(["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",
}
)Результат:

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