Кластеризация текста с расстояниями Левенштейна

Вы можете использовать маски для ваших наборов данных. Основным примером может быть следующее:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y = np.arange(10) * 0.1

mask1 = y < 0.5
mask2 = y >= 0.5

plt.bar(x[mask1], y[mask1], color = 'red')
plt.bar(x[mask2], y[mask2], color = 'blue')
plt.show()

Результат должен быть:

UPDATE:

По мере обновления вашего вопрос я обновляю код. Для вашего простого случая, и если бы я правильно понял, вы могли бы сделать следующее (уродливое) взломать:

import pandas as pd

df = pd.DataFrame({'col1':[1,2,3], 'col2':[4,5,6]}, 
                  index = ['row1','row2','row3'])

dfstacked = df.stack()

mask = dfstacked <= 3

colors = np.array(['b']*len(dfstacked))
colors[mask.values] = 'r'

dfstacked.plot(kind = 'bar', rot = 45, color = colors)
plt.show()

Или использовать еще OO solution .

Код кратко пояснил:

  • Я создаю маску для своих красных столбцов
  • Я создаю массив цветов
  • Измените массив цветов, чтобы использовать другой цвет для моих замаскированных значений.
  • Поскольку фреймворк dfstacked имеет MultiIndex, тики плохо напечатаны, поэтому я использую ключевое слово rot для поворота их. Если вы хотите автоматизировать его, чтобы получить хороший сюжет, вы можете использовать plt.tight_layout() до plt.show().

Надеюсь, это поможет.

30
задан Community 23 May 2017 в 10:31
поделиться