7

Ответ на пост «Минусы»43

Пикабу, есть вот какая идея, она кажется очень наглядной и интуитивно понятной, вместо отображения полосочек с минусами. @pikabu, @moderator, как вам идея?

Можно создать интересометр – инструмент, который поможет анализировать реакцию на контент. Он работает аналогично полярной системе координат (см. рисунок 1) и выглядит как циферблат.

В основе лежит 2D круговая диаграмма:

  • Вертикальная ось (OY) отвечает за баланс положительных и отрицательных реакций.

  • Горизонтальная ось (OX) отражает уровень интереса, связанный с числом реакций.

    В результате получаем точку на окружности в одной из областей.

В исходном состоянии (без реакций) стрелка (точка) указывает направо (3 часа). Далее:

  • Если много плюсов, она поднимается вверх (к 12 часам).

  • Если много минусов, опускается вниз (к 6 часам).

  • Если плюсы и минусы примерно равны, но их много, стрелка указывает налево (9 часов).

  • Если плюсы и минусы равны, но их мало, остается направленной на 3 часа (слабый интерес).
    (см. рисунок 2)

Дополнительно можно использовать цветовую кодировку:

  • Зеленый оттенок – преобладание плюсов.

  • Красный оттенок – преобладание минусов.

  • Серый оттенок– слабый интерес.

  • Оранжевый – сильный интерес при сумме реакций, близкой к нулю.

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

В таком формате система будет интуитивно понятной. Смотри примеры на рисунке 3.

Реализовать можно примерно так:

import numpy as np

import matplotlib.pyplot as plt

np.random.seed(42)

Np = np.random.randint(0, 200, 30) #плюсы

Nm = np.random.randint(-200, 0, 30) #минусы

# Устанавливаем число реакций на пост, после которого отражаем X

threshold = 150

Nm_abs = np.abs(Nm)

theta = (np.pi / 2) * (Np - Nm_abs) / (Np + Nm_abs + 1e-9)

X = np.cos(theta)

Y = np.sin(theta)

# Отражаем X, если Np < |Nm|

X = np.where(Np + Nm_abs > threshold, -X, X)

colors = []

for i in range(len(X)):

if np.abs(X[i]) < np.sin(np.pi/4) and Y[i] > 0: # X ≈ 0 и Y ≈ 1

colors.append("green")

elif np.abs(X[i]) < np.sin(np.pi/4) and Y[i] < 0: # X ≈ 0 и Y ≈ -1

colors.append("red")

elif np.abs(Y[i]) < np.sin(np.pi/4) and X[i] > 0: # Y ≈ 0 и X ≈ 1

colors.append("gray")

elif np.abs(Y[i]) < np.sin(np.pi/4) and X[i] < 0: # Y ≈ 0 и X ≈ -1

colors.append("orange")

else:

colors.append("black")

fig, ax = plt.subplots(figsize=(6, 6))

circle = plt.Circle((0, 0), 1, color='black', fill=False, linewidth=2)

ax.add_patch(circle)

# Размещаем точки

ax.scatter(X, Y, c=colors, label="Точки на окружности")

# Настройки осей

ax.set_xlim(-1.2, 1.2)

ax.set_ylim(-1.2, 1.2)

ax.axhline(0, color='gray', linestyle='--', linewidth=0.5)

ax.axvline(0, color='gray', linestyle='--', linewidth=0.5)

ax.set_aspect('equal', adjustable='datalim')

plt.grid(True)

# Легенда цветов

from matplotlib.patches import Patch

legend_elements = [

Patch(facecolor='green', label='X ≈ 0, Y ≈ 1'),

Patch(facecolor='red', label='X ≈ 0, Y ≈ -1'),

Patch(facecolor='gray', label='X ≈ 1, Y ≈ 0'),

Patch(facecolor='orange', label='X ≈ -1, Y ≈ 0')

]

ax.legend(handles=legend_elements)

plt.show()

print("Np (положительные):", Np)

print("Nm (отрицательные):", Nm)

print("X:", X)

print("Y:", Y)

В целом, рассуждая дальше, систему можно еще упростить. Вместо стрелки можно использовать одну точку, размещенную в соответствующей области на окружности. А можно вообще использовать рамку всего виджета с оценкой поста. Просто внедрить соответствующую точку в нужном месте на периметре.

Что скажете?

Правила сообщества

Сообщество для аккумуляции всего фидбека по Пикабу


Если вы предлагаете новую функцию, опишите подробно:

- Задачу, которую выполняет предлагаемое изменение;

- Возможные плюсы и минусы;

- Версию Пикабу, для которой делаете предложение.


Пожалуйста, имейте в виду, что предложение:

- Должно быть полезным, понятным и простым;

- Должно быть востребованным пикабушниками;

- Не должно создавать визуального нагромождения.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества