3

Я ищу, чтобы создать диаграмму, очень похожую на лексическую диаграмму nltk, но я рисую пустоту, как ее построить. Я думал, что разброс будет моей лучшей геомой, используя '|' как маркеры, и настройку альфы, но я сталкиваюсь со всеми проблемами, задающими параметры. Примером этого является ниже:Pandas scatterplot категориальные и временные оси

enter image description here

У меня есть dataframe, расположенный с индексом даты и времени, FREQ = «D», в течение 5 лет, а каждый столбец представляет собой счетчик конкретного слова, используемого, что Дата. Например:

tst = pd.DataFrame(index=pd.date_range(datetime.datetime(2010, 1, 1), end=datetime.datetime(2010, 2, 1), freq='D'), data=[[randint(0, 5), randint(0, 1), randint(0, 2)] for x in range(32)]) 

В настоящее время я пытаюсь что-то похожее на следующее:

plt.figure() 
tst.plot(kind='scatter', x=tst.index, y=tst.columns, marker='|', color=sns.xkcd_rgb['dodger blue'], alpha=.05, legend=False) 
yticks = plt.yticks()[0] 
plt.yticks(yticks, top_words) 

код выше возвращающее исключение KeyError:

KeyError: "['2009-12-31T19:00:00.000000000-0500' '2010-01-01T19:00:00.000000000-0500'\n '2010-01-02T19:00:00.000000000-0500' '2010-01-03T19:00:00.000000000-0500'\n '2010-01-04T19:00:00.000000000-0500' '2010-01-05T19:00:00.000000000-0500'\n '2010-01-06T19:00:00.000000000-0500' '2010-01-07T19:00:00.000000000-0500'\n '2010-01-08T19:00:00.000000000-0500' '2010-01-09T19:00:00.000000000-0500'\n '2010-01-10T19:00:00.000000000-0500' '2010-01-11T19:00:00.000000000-0500'\n '2010-01-12T19:00:00.000000000-0500' '2010-01-13T19:00:00.000000000-0500'\n '2010-01-14T19:00:00.000000000-0500' '2010-01-15T19:00:00.000000000-0500'\n '2010-01-16T19:00:00.000000000-0500' '2010-01-17T19:00:00.000000000-0500'\n '2010-01-18T19:00:00.000000000-0500' '2010-01-19T19:00:00.000000000-0500'\n '2010-01-20T19:00:00.000000000-0500' '2010-01-21T19:00:00.000000000-0500'\n '2010-01-22T19:00:00.000000000-0500' '2010-01-23T19:00:00.000000000-0500'\n '2010-01-24T19:00:00.000000000-0500' '2010-01-25T19:00:00.000000000-0500'\n '2010-01-26T19:00:00.000000000-0500' '2010-01-27T19:00:00.000000000-0500'\n '2010-01-28T19:00:00.000000000-0500' '2010-01-29T19:00:00.000000000-0500'\n '2010-01-30T19:00:00.000000000-0500' '2010-01-31T19:00:00.000000000-0500'] not in index" 

Любая помощь будет оценена.

С помощью, я был в состоянии произвести следующие действия:

plt.plot(tst.index, tst, marker='|', color=sns.xkcd_rgb['dodger blue'], alpha=.25, ms=.5, lw=.5) 
plt.ylim([-1, 20]) 
plt.yticks(range(20), top_words) 

enter image description here

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

ответ

1

Я не уверен, что вы можете сделать это с помощью метода .plot. Тем не менее, это легко сделать это прямо в matplotlib:

plt.plot(tst.index, tst, marker='|', lw=0, ms=10) 
plt.ylim([-0.5, 5.5]) 

enter image description here

+0

работал почти так же, как ожидалось. Тем не менее, у меня есть немного сдвига на моих топорах. Мой аргумент для 0 образует небольшую полосу внизу, где каждое другое целое число образует линию вверх. Я отправлю результат в свой вопрос. – hyleaus

1

Если вы можете установить Сиборн, попробуйте stripplot():

import seaborn as sns 
sns.stripplot(data=tst, orient='h', marker='|', edgecolor='blue'); 

plot

Обратите внимание, что я изменили ваши данные, чтобы они выглядели немного интереснее:

tst = pd.DataFrame(index=pd.date_range(datetime.datetime(2010, 1, 1), end=datetime.datetime(2010, 2, 1), freq='D'), 
        data=(150000 * np.random.rand(32, 3)).astype('int')) 

Более подробную информацию о Сиборн:

http://stanford.edu/~mwaskom/software/seaborn/tutorial/categorical.html

+0

Да, это работает очень хорошо. Я столкнулся с этим модулем в документах, но не смог получить к нему доступ ранее. Я использовал устаревшую версию морского дна. Спасибо за предложение! – hyleaus

+0

Я действительно хочу сказать, что шкала на дне должна читать даты. Из моего исходного набора данных точка рассеивания должна находиться на пересечении столбца и индекса, причем точка затемняется в зависимости от степени в данных. – hyleaus