2017-05-20 4 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

당신이 정교한 수, 당신은 무엇을 의미합니까? 산점도를 만들므로,'df [value]'와'df [name]'의 해당 숫자가 각각 같은 위치에있는 한 값의 순서는 중요하지 않습니다. 줄거리를 제공하고 그 줄거리가 예상 한대로가 아니라는 것을 설명해 주시겠습니까? –

답변

1

변수 이름의 당신의 선택을 감안할 때, 플러스 분산 플롯의 사용을 둘러싼 보이는 혼란, value으로 분류 당신은 x 축에 플롯하고 싶은 범주 변수를 할 수있다 name 것 같아 .

이 경우 처음에는 df.index을 x 축으로 플로팅 한 다음 눈금 레이블을 name 개 항목으로 변경하는 것이 좋습니다. 올바른 인덱스 순서를 얻으려면 sort_values 뒤에 reset_index()을 사용하십시오.

팬더와 파이 Plot 모두 모듈을 추가하지 않아도이 작업을 수행 할 수 있어야하지만 진드기 라벨을 정렬하는 데는 약간의 문제가있었습니다. 대신에, 나는 시본의 pointplot()은 어떤 문제없이이 일을 처리 발견

# 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

관련 문제