2017-05-20 48 views
-1

なぜこのコードはx軸を '値'でソートしてプロットしないのですか?matplotlibでのx軸の並べ替え

import pandas as pd 
import matplotlib.pyplot as plt 

# creating dataframe 
df=pd.DataFrame() 
df['name'] = [1,2,3] 
df['value'] = [4,3,5] 

# sorting dataframe 
df.sort_values('value', ascending = False, inplace= True) 

# plot 
plt.scatter(df['value'],df['name']) 
plt.show() 
+5

あなたは何を意味するか、手の込んだできますか?A:その代わり、私はSeabornのpointplot()は問題なく、このジョブを処理しましたか散布図を作成するので、 'df [value]'と 'df [name]'の対応する数字がそれぞれ同じ場所にある限り、値の順序は重要ではありません。おそらくプロットを提供し、そのプロットがあなたが期待した通りではないことを説明できますか? –

答えて

1

変数名のあなたの選択を考えると、プラス散布図の使用を取り巻く見せかけの混乱は、valueによって並べ替えられますが、x軸上にプロットしたいカテゴリ変数であってもよいnameのように思えます。

これが当てはまる場合は、最初にdf.indexをx軸としてプロットし、目盛りのラベルをnameのエントリに変更することをおすすめします。 sort_valuesの後にreset_index()を使用すると、正しいインデックス順序が得られます。

追加のモジュールなしでPandasとPyplotの両方でこれを行うことができるはずですが、私は目盛りのラベルを整列させるのにいくつか問題がありました。

# sort, then reset index 
df = df.sort_values('value', ascending = False).reset_index(drop=True) 

import seaborn as sns 
ax = sns.pointplot(x=df.index, y=df.value) 
ax.set_xlabel("Name") 
ax.set_ylabel("Value") 

# Use name column to label x ticks 
_ = ax.set_xticklabels(df.name.astype(str).values) 

[1]: https://i.stack.imgur.com/PX

関連する問題