2017-01-22 196 views
-4

我想绘制字符串与整数使用matplotlib 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() 

我会欣赏任何建议。非常感谢。

+0

散点图是显示两个数字* *变量之间的关系的一种方式,或者可以订购,并与实数值相关的至少变量。为什么你想要一个散点图,其中一个变量是一个字符串?条形图会更有意义。 –

+2

“它不起作用”,这不足以描述你的问题。 – Goyo

+0

@RoryDaulton:这是因为我想查看有多少个名称具有不同的利用率级别。这是我选择散点图的原因。 – user3447653

回答

2

您不能将分类值直接绘制。相反,您可以绘制一个升序数字列表,然后将tick标签设置为列表中的名称。

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