Какая деятельность повышает или снижает наш уровень счастья 2 min read

Диаграмма построена через Grok 3 + colab.research.google.com + keynote

Ну «любовь» и “болеть в кровати” — все понятно. Но вот, что меня удивило, так это “Садоводство, участок” в ТОП-4. Теперь понятно, почему рано или поздно многие заводят дачу. На треть эффективней, чем пить, а минусов для здоровья почти нет.

Визуализация построена через Grok3 в 4 промпта + colab.research.google.com

Источник исследования:

  1. Are You Happy While You Work?, Alex Bryson, George MacKerron (2017), https://doi.org/10.1111/ecoj.12269

Исходный код:

import pandas as pd
import matplotlib.pyplot as plt

# Data
data = {
"Activity": [
"Интим, любовь", "Театр, танцы, концерт", "Выставка, музей, библиотека",
"Спорт, бег, упражнения", "Садоводство, участок", "Пение, выступления",
"Разговоры, общение", "Наблюдение за птицами, природа", "Ходьба, походы",
"Охота, рыбалка", "Алкоголь", "Хобби, искусство, ремёсла",
"Медитация, религиозные занятия", "Матч, спортивное событие",
"Уход за детьми, игры с детьми", "Уход за питомцами, игры с ними",
"Слушание музыки", "Другие игры, головоломки", "Покупки, дела",
"Азартные игры, ставки", "Смотрение ТВ, фильмы",
"Компьютерные игры, игры на iPhone", "Еда, перекусы", "Приготовление пищи",
"Чай/кофе", "Чтение", "Слушание речи/подкастов", "Умывание, одевание, уход",
"Сон, отдых, расслабление", "Курение", "Обзор интернета",
"Сообщения, email, соцсети", "Домашние дела, ремонт", "Путешествия, дорога",
"Собрание, семинар, занятие", "Администрирование, финансы, организация",
"Ожидание, очередь", "Уход или помощь взрослым", "Работа, учёба",
"Болеть в постели", "Другое (версия < 1.0.2)", "Другое (версия >= 1.0.2)"
],
"Coefficient": [
14.20, 9.29, 8.77, 8.12, 7.83, 6.95, 6.38, 6.28, 6.18, 5.82, 5.73, 5.53,
4.95, 4.39, 4.10, 3.63, 3.56, 3.07, 2.74, 2.62, 2.55, 2.39, 2.38, 2.14,
1.83, 1.47, 1.41, 1.08, 1.08, 0.69, 0.59, 0.56, -0.65, -1.47, -1.50,
-2.45, -3.51, -4.30, -5.43, -20.4, -1.00, -2.31
]
}

# Create DataFrame
df = pd.DataFrame(data)

# Sort by Coefficient
df = df.sort_values(by="Coefficient", ascending=True)

# Create chart
plt.figure(figsize=(10 * 0.9, 12 * 1.2), dpi=150) # Adjust size and resolution
plt.gca().set_facecolor('#091720') # Background color
#plt.figure().patch.set_facecolor('#091720') # Outer background color

# Bar colors
colors = ['#00FFE1' if coeff >= 0 else '#EA532E' for coeff in df["Coefficient"]]

# Plot bars
bars = plt.barh(df["Activity"], df["Coefficient"], height=0.7, color=colors)

# Customize chart
plt.title("Коэффициенты счастья по видам деятельности", fontsize=17, loc='left', pad=15, color='white')
plt.xlabel("Коэффициент (уровень счастья)", fontsize=12, color='white')
plt.ylabel("Виды деятельности", fontsize=14, color='white')
plt.axvline(x=0, color='white', linestyle='--', linewidth=0.8) # Reference line
plt.grid(False)

# Add labels
for i, bar in enumerate(bars):
width = bar.get_width()
y_pos = bar.get_y() + bar.get_height() / 2
label_x_pos = -0.5 if width > 0 else 0.5
ha = 'right' if width > 0 else 'left'
plt.text(label_x_pos, y_pos, df["Activity"].iloc[i], ha=ha, va='center', fontsize=12, color='white')

# Add values
for i, bar in enumerate(bars):
width = bar.get_width()
y_pos = bar.get_y() + bar.get_height() / 2
value_x_pos = width + 0.5 if width > 0 else width - 0.5
ha = 'left' if width > 0 else 'right'
plt.text(value_x_pos, y_pos, f"{df['Coefficient'].iloc[i]:.2f}", ha=ha, va='center', fontsize=12, color='white')

# Remove y-axis labels
plt.yticks([])

# Remove borders (except X axis)
ax = plt.gca()
for spine in ['top', 'left', 'right']:
ax.spines[spine].set_visible(False)
ax.spines['bottom'].set_visible(True)
ax.spines['bottom'].set_color('white')

# Set tick colors
ax.tick_params(axis='x', colors='white')
ax.tick_params(axis='y', colors='white')

# Adjust layout
plt.tight_layout()

# Show chart
plt.show()

Добавить комментарий