2017-01-22 1 views
-4

Я пытаюсь построить строки и целые числа, используя matplotlib scatterplot.Scatterplot в matplotlib

Мой набор данных выглядит следующим образом:

 Name    Utilisation 
     manhit     10 
     movers     9 
     mayer     9 
     fabcom    8 
     freshimp    7 

Я попытался с помощью следующего кода (именуемых от одного из предыдущих постов), но по какой-то причине он не работает:

import matplotlib.pyplot as plt 
    from matplotlib.ticker import FuncFormatter, MultipleLocator 
    import numpy as np 

    x_data = np.array(dftail.Utilisation) 
    print x_data 
    y_data = np.array(dftail.Name) 
    print y_data 

    def ord_to_char(v, p=None): 
     return chr(int(v)) 

    fig, ax = plt.subplots() 
    ax.plot(x_data, y_data, 'x') 
    ax.xaxis.set_major_formatter(FuncFormatter(ord_to_char)) 
    ax.xaxis.set_major_locator(MultipleLocator(1)) 
    plt.show() 

I Would оцените любой совет. Огромное спасибо.

+0

Точечная участок является способом показать отношения между двумя * * числовыми переменными, или по крайней мере переменных, которые могут быть заказаны и связанной со значениями действительных чисел. Почему вы пытаетесь использовать диаграмму рассеяния, где одна переменная является строкой? Гистограмма будет иметь больше смысла. –

+2

«это не работает», недостаточно описания вашей проблемы. – Goyo

+0

@RoryDaulton: Это потому, что я хочу посмотреть, сколько имен имеет разные уровни использования. Вот почему я выбрал разброс. – user3447653

ответ

2

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

import matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 

dftail = pd.DataFrame(
     {"Name": ["manhit", "movers", "mayer", "fabcom", "freshimp"], 
     "Utilisation": [10,9,9,8,7]}) 

x_data = np.arange(len(dftail)) 
y_data = np.array(dftail.Utilisation) 


fig, ax = plt.subplots() 
ax.plot(x_data, y_data, 'bo') 
ax.set_xticks(x_data) 
ax.set_xticklabels(dftail.Name) 
plt.show() 

enter image description here