Seaborn 막대 그림 - 값 표시
데이터 프레임에는 있지만 그래프에는 없는 값을 표시하기 위해 막대 차트를 사용하여 Seaborn에서 두 가지 작업을 수행하는 방법을 찾고 있습니다.
-
다른 필드를 그래프로 표시하는 동안 데이터 프레임의 한 필드 값을 표시하려고 합니다. 예를 들어 아래에서는 'tip'를 그래프로 표시하지만 'total_bill'의 값을 각 막대(즉, 금요일 위의 325.88) 위에 중앙에 배치하고 싶습니다. 토요일 이상 1778.40 등)
-
가장 낮은 값인 'total_bill'가 가장 밝은 색상(이 경우 금요일)이고 가장 높은 값인 'total_bill'이 가장 어두운 색상으로 막대의 색상을 조정할 수 있는 방법이 있습니까? 분명히 스케일링을 할 때 한 가지 색상(즉, 파란색)으로 고정됩니다.
고마워요! 쉽겠지만 놓치고 있어요.
다른 사람들은 이것이 다른 문제(혹은 두 개)의 중복이라고 생각하지만, 그래프에 없는 값을 레이블이나 음영의 기준으로 사용하는 방법은 놓치고 있습니다. total_bill을 기본으로 사용한다고 해야 할까요? 죄송하지만, 저는 그 답변들을 바탕으로 그것을 이해할 수 없습니다.
다음 코드부터 시작해서
import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata- book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()
g=sns.barplot(x='day',y='tip',data=groupedvalues)
다음과 같은 결과를 얻습니다.
[
임시 솔루션:
for index, row in groupedvalues.iterrows():
g.text(row.name,row.tip, round(row.total_bill,2), color='black', ha="center")
[
shading에서 아래 예제를 사용하여 다음을 시도했습니다.
import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()
pal = sns.color_palette("Greens_d", len(data))
rank = groupedvalues.argsort().argsort()
g=sns.barplot(x='day',y='tip',data=groupedvalues)
for index, row in groupedvalues.iterrows():
g.text(row.name,row.tip, round(row.total_bill,2), color='black', ha="center")
하지만 그것은 나에게 다음과 같은 오류를 주었다.
AttributeError: 'DataFrame'개체에 'argsort 속성이 없습니다.
그래서 수정을 시도했습니다.
import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()
pal = sns.color_palette("Greens_d", len(data))
rank=groupedvalues['total_bill'].rank(ascending=True)
g=sns.barplot(x='day',y='tip',data=groupedvalues,palette=np.array(pal[::-1])[rank])
그리고 그것은 나를 남긴다.
IndexError: 인덱스 4가 크기가 4인 축 0에 대한 범위를 벗어났습니다
연결된 질문(시본 바 플롯에서 색상 척도 변경))의 해법을 고수합시다. argsort를 사용하여 막대를 색칠하는 데 사용할 색 순서를 결정하려고 합니다. 연결된 질문에서 Argsort는 Series 객체에 적용되며, DataFrame이 있는 동안 정상적으로 작동합니다. 따라서 Argsort를 적용할 데이터 프레임의 열을 하나 선택해야 합니다.
[![여기에 이미지 설명 입력](https://i.stack.imgur.com/104c8.핑그)1
두 번째 시도도 잘 되는데 유일한 문제는 'rank()'로 반환되는 순위가 0이 아닌 '1'에서 시작된다는 것이다. 그래서 배열에서 1을 빼야 한다. 또한 인덱싱을 위해서는 정수 값이 필요하므로 'int'로 캐스팅해야 한다.
단일 축 또는 축 행렬(하위 그림)과 함께 작동
이것이 항목 2에 도움이 되기를 바랍니다. a) 총 청구서별로 정렬한 후 인덱스를 이 열로 재설정할 수 있습니다. b) 팔레트=" 사용파란색을 사용하여 옅은 파란색에서 진한 파란색으로 차트의 크기를 조정합니다(검은 파란색에서 옅은 파란색으로 차트의 크기를 조정할 경우 팔레트=" 사용).블루스_d")