2017-01-22 13 views
-4

matplotlib散布図を使って文字列と整数をプロットしようとしています。matplotlibの散布図

マイデータセットのようになります。

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

私は(前回の記事の1から参照)次のコードで試してみましたが、何らかの理由でそれが動作しません:

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つの*数値*変数、または注文と実数値に関連付けることができ、少なくとも変数間の関係を表示する方法です。なぜあなたは1つの変数が文字列である散布図を試していますか?棒グラフははるかに理にかなっています。 –

+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