2017-01-22 179 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