Je voudrais pouvoir contrôler le nombre de graduations des axes sur une parcelle marine en Python 3.5. Je suis très habitué à utiliser ggplot de R, donc j'ai des problèmes avec des fonctionnalités analogues en Python.
À titre d'exemple, voici le type de données avec lesquelles je travaille actuellement:
test = pd.DataFrame()
test["X"] = [1,2,3,1,2,3]
test["Y"] = [1,5,3,7,2,4]
test["Category"] = ["A", "A", "A", "B", "B", "B"]
Et je voudrais faire quelque chose comme facet_wrap () de ggplot en faisant:
sns.set(style = "ticks", color_codes = True)
test_plot = sns.FacetGrid(test, col = "Category")
test_plot = (test_plot.map(sns.plt.plot, "X", "Y").add_legend())
test_plot.set_xticks(np.arange(1,4,1))
sns.plt.show(test_plot)
Cependant, j'obtiens les erreurs suivantes. Le problème semble être quelque chose sur la définition des étiquettes d'axe dans FacetGrid, mais je ne sais pas comment le résoudre. Est-ce un problème avec Python 3 ou avec la spécification d'axes sur un tracé à facettes?
UserWarning: tight_layout : falling back to Agg renderer
warnings.warn ("tight_layout: retour au rendu Agg")
test_plot.set_xticks(np.arange(1,4,1))
AttributeError: 'FacetGrid' object has no attribute 'set_xticks'
set_xticks
Est une méthode sur un objet Axes matplotlib, mais FacetGrid
a plusieurs axes. Vous pouvez faire une boucle sur eux et définir les xticks sur chacun d'eux, mais un moyen plus simple consiste à appeler FacetGrid.set(xticks=np.arange(1,4,1))
, qui effectuera la boucle en interne.