質問編集履歴

2

イメージ図を追記しました。

2021/07/25 15:01

投稿

hacosato
hacosato

スコア48

test CHANGED
File without changes
test CHANGED
@@ -133,3 +133,15 @@
133
133
  が、meg_さんのおっしゃる通り、長さ0の棒グラフが挟まっているように見えます。
134
134
 
135
135
  hueを使うのがそもそもおかしいでしょうか?
136
+
137
+
138
+
139
+ (さらに追記)
140
+
141
+ やりたいことを図にしました。
142
+
143
+ 左の表(DataFrameで渡す)を受け取って、右のグラフを描きたいです。
144
+
145
+ 基本的には横組みの棒グラフですが、caseによってグラフの色を変えたいです。
146
+
147
+ ![イメージ説明](55ef586239a6b0f319740613c84b021e.png)

1

meg_さんのご回答を受けて追記しました。

2021/07/25 15:01

投稿

hacosato
hacosato

スコア48

test CHANGED
File without changes
test CHANGED
@@ -67,3 +67,69 @@
67
67
  matplotlib 3.2.1
68
68
 
69
69
  seaborn 0.11.1
70
+
71
+
72
+
73
+ (追記)
74
+
75
+ すみません。
76
+
77
+ サンプルの作り方がよくなかったので再送させてください。
78
+
79
+ カラムをひとつ追記しました。
80
+
81
+
82
+
83
+ ```Python
84
+
85
+ from matplotlib import pyplot as plt
86
+
87
+ import seaborn as sns
88
+
89
+ import pandas as pd
90
+
91
+
92
+
93
+ df = pd.DataFrame({'label': ['A', 'A', 'a', 'a', 'a', 'B', 'B', 'B', 'b', 'b', ], 'case': ['u', 'u', 'l', 'l', 'l', 'u', 'u', 'u', 'l', 'l'], 'score': [1, 1, 1, 2, 3, 1, 2, 3, 4, 5]})
94
+
95
+ sns.barplot(x='score', y='label', orient='h', data=df
96
+
97
+ # ,hue='case'
98
+
99
+ , palette=sns.color_palette("Set2"))
100
+
101
+ ```
102
+
103
+ ![イメージ説明](f4a9b5388fe48f10474fe1d694007ec0.png)
104
+
105
+ これを大文字か小文字かでそれぞれ色をつけたいです
106
+
107
+ (大文字は緑、小文字は赤、のように)。
108
+
109
+ ```Python
110
+
111
+ from matplotlib import pyplot as plt
112
+
113
+ import seaborn as sns
114
+
115
+ import pandas as pd
116
+
117
+
118
+
119
+ df = pd.DataFrame({'label': ['A', 'A', 'a', 'a', 'a', 'B', 'B', 'B', 'b', 'b', ], 'case': ['u', 'u', 'l', 'l', 'l', 'u', 'u', 'u', 'l', 'l'], 'score': [1, 1, 1, 2, 3, 1, 2, 3, 4, 5]})
120
+
121
+ sns.barplot(x='score', y='label', orient='h', data=df
122
+
123
+ ,hue='case'
124
+
125
+ , palette=sns.color_palette("Set2"))
126
+
127
+ ```
128
+
129
+ ![イメージ説明](8804530af54d0bda70a9d20e083b5751.png)
130
+
131
+ これで間隔が詰まればうまくいくかと思いご質問しました。
132
+
133
+ が、meg_さんのおっしゃる通り、長さ0の棒グラフが挟まっているように見えます。
134
+
135
+ hueを使うのがそもそもおかしいでしょうか?