2016-11-23 68 views
0

如何在海宝中的FacetGrid内定制蜱标签的属性?在下面的例子中我想仅改变x轴ticklabels的字体大小:通过axes阵列FacetGrid对象这似乎不必要的复杂的在seaborn中定制facetgrid xticks和标签

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) 

我的溶液进行迭代。我知道fontscale可以在全局设置,但我只想更改x轴ticklabel字体。有一个更好的方法吗?还有一种方法可以将标签样式自定义为科学记数法?

回答

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))) 
相关问题