Nano Hash - криптовалюты, майнинг, программирование

Как выровнять точки данных и галочки?

Я хочу нарисовать сетку с кругами и пометить каждую строку и столбец. Хотя я могу нарисовать точки данных, я не могу правильно выровнять точки данных и их соответствующие метки, поэтому график выглядит следующим образом:

введите здесь описание изображения

Как это сделать правильно, чтобы метки галочек совпадали с точками данных?

Код:

import numpy as np
import itertools
from bokeh.models import Circle, ColumnDataSource
from bokeh.plotting import figure, show

space = 0.5
row_ind = np.arange(0, 2, space)
col_ind = np.arange(0, 1.5, space)

data_points = list(itertools.product(row_ind, col_ind))

rows = [dp[0] for dp in data_points] 
cols = [dp[1] for dp in data_points]
size = 10
sizes = [size] * len(data_points)
source = ColumnDataSource(dict(columns=cols, rows=rows, size=sizes))

plot = figure(
    plot_width=400,
    plot_height=300,
    x_range=["1", "2", "3"],
    y_range=list("ABCD")
)
plot.circle(
    x="columns",
    y="rows",
    size="size",
    line_color="black",
    fill_color="white",
    line_width=2,
    source=source
)
show(plot)
28.12.2020

Ответы:


1

Вы должны использовать диапазоны dafault от боке и затем изменить галочки, используя plot.xaxis.ticker, plot.yaxis.ticker и plot.yaxis.major_label_overrides.

Полный пример

import numpy as np
import itertools
from bokeh.models import Circle, ColumnDataSource
from bokeh.plotting import figure, show, output_notebook
output_notebook()
row_ind = np.arange(0, 2, 0.5)
col_ind = np.arange(0, 1.5, 0.5)

data_points = list(itertools.product(row_ind, col_ind))
rows = [dp[0] for dp in data_points] 
cols = [dp[1] for dp in data_points]
sizes = [10] * len(data_points)

source = ColumnDataSource(dict(columns=cols, rows=rows, size=sizes))
plot = figure(
    plot_width=400,
    plot_height=300
)
plot.circle(
    x="columns",
    y="rows",
    size="size",
    line_color="black",
    fill_color="white",
    line_width=2,
    source=source
)
plot.xaxis.ticker, plot.yaxis.ticker = col_ind, row_ind
plot.yaxis.major_label_overrides = dict(zip(
    [int(i) if i.is_integer() else i for i in row_ind], 
    list('ABCD'))
   )
show(plot)

Вывод

Результат

28.12.2020
  • Спасибо! Я не могу, однако, воспроизвести этот сюжет. Я думаю, что row_ind и col_ind нужно поменять местами в вашем коде). Когда я затем использую этот major_label_overrides, я получаю смесь цифр и букв. Я использую: plot.xaxis.ticker = col_ind, plot.yaxis.ticker = row_ind, а затем plot.yaxis.major_label_overrides = {i:s for i,s in zip(row_ind, list('ABCD'))}, но тогда 0, B, 1 и D в качестве галочек, A и C игнорируются. Не могли бы вы опубликовать свой полный код и версию боке, которую вы используете? Я уже проголосовал, так как это дает мне возможность поиграть; Я принимаю, когда это работает... 28.12.2020
  • Хорошо, решил это; похоже, это ошибка, описанная здесь. В качестве обходного пути я добавил row_ind = [ int(item) if float(item).is_integer() else item for item in row_ind ] (то же самое для col_ind), что затем решает проблему. У вас есть более простое решение? 28.12.2020
  • Я не распознал эту ошибку и создал изображение, используя самоопределенный словарь {0.5: 'A', 1: 'B', 1.5: 'C', 2: 'D'}, и ожидал, что сработает другое решение. Я обновил свой ответ и теперь показываю полный код. Мне не удалось избежать обходного пути, о котором вы упомянули. 29.12.2020
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..