Изменение расстояния между категориями при построении FacetGrid с полосами ошибок - PullRequest
0 голосов
/ 27 марта 2019

Я использую FacetGrid из Seaborn вместе с панелью ошибок из Matplotlib, чтобы сгенерировать график с двумя категориями по оси Y. Я хочу сосредоточить две категории (сделать их ближе друг к другу и более отдаленными от полей).

Я пытался изменить высоту / аспект, чтобы добиться этого без успеха. Я делюсь кодом ниже. Спасибо!

import matplotlib.pyplot as plt 
import seaborn as sns
import pandas as pd

cat = ['a','b','a','a','a','b','b','a']      
var=[3,5,4,6,7,5,6,3]       
sd_var = [0.1,0.3,0.1,0.5,0.4,0.2,0.1,0.2]      

df = pd.DataFrame({'cat' : cat, 'var' : var, 'sd_var' : sd_var})

g = sns.FacetGrid(data=df, hue="cat", aspect=1, height=6)        
g.map(plt.errorbar, "cat", "var", "sd_var", marker="o",
linestyle='',markersize='6', capsize=4, elinewidth=2)

plt.show()      

1 Ответ

0 голосов
/ 28 марта 2019

Вы очень близки к этому

import matplotlib.pyplot as plt 
import seaborn as sns
import pandas as pd

# replace label with actual number
cat = [1,2,1,1,1,2,2,1]      
var=[3,5,4,6,7,5,6,3]       
sd_var = [0.1,0.3,0.1,0.5,0.4,0.2,0.1,0.2]      

df = pd.DataFrame({'cat' : cat, 'var' : var, 'sd_var' : sd_var})

g = sns.FacetGrid(data=df, hue="cat", aspect=1, height=6)        
g.map(plt.errorbar, "cat", "var", "sd_var", marker="o",
linestyle='',markersize='6', capsize=4, elinewidth=2)

# place the ticks at center by widening the plot
plt.xlim((0, 3))
# fix ticks at the number encoding for each class
g.fig.axes[0].xaxis.set_ticks([1, 2])
# name the numbers
g.fig.axes[0].xaxis.set_ticklabels(['a', 'b'])
plt.show()

Хитрость заключается в том, чтобы использовать относительную длину x-limit и вашу кодировку чисел для классов.

enter image description here

...