web-dev-qa-db-fra.com

Modifier le nombre de graduations de l'axe X dans les parcelles marines

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'
13
Nancy

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.

16
mwaskom