2016-11-23 2 views
0

Как можно настроить свойства ticklabels внутри FacetGrid в море? В приведенном ниже примере я хотел изменить FontSize только самое ticklabels оси х:Настройка факельных стрелок и этикеток на морском дне

import matplotlib.pylab as plt 
import seaborn as sns 
df1 = pandas.DataFrame({"x": np.random.rand(100), 
         "y": np.random.rand(100)}) 
df1["row"] = "A" 
df1["col"] = "1" 
df2 = pandas.DataFrame({"x": np.random.rand(100), 
         "y": np.random.rand(100) + 1}) 
df2["row"] = "A" 
df2["col"] = "2" 
df = pandas.concat([df1, df2]) 
g = sns.FacetGrid(df, row="row", col="col", hue="col") 
g.map(plt.scatter, "x", "y") 
print g.axes 
row, col = g.axes.shape 
for i in range(row): 
    for j in range(col): 
     ax = g.axes[i, j] 
     print "ax: ", ax.get_xticklabels() 
     ax.set_xticklabels(ax.get_xticklabels(), fontsize=6) 

мое решение итерация через axes массив FacetGrid объекта, который кажется излишне сложным. Я знаю, что fontscale может быть настроен глобально, но я хочу только изменить шрифты xl. Есть лучший способ сделать это? и есть ли способ настроить стиль ярлыков как научную нотацию?

ответ

0

Вы можете упростить цикл, используя метод flatten. Я также добавил способ форматирования в научной нотации. .0e означает научную нотацию с 0 десятичными знаками.

import matplotlib.ticker as tkr 

for ax in g.axes.flatten(): 
    ax.set_xticklabels(ax.get_xticklabels(), fontsize=6) 
    ax.xaxis.set_major_formatter(
     tkr.FuncFormatter(lambda x, p: "{:.0e}".format(x)))