Cómo cambiar manualmente las tags de garrapatas de las plots de margen en una plot de Seaborn

Estoy tratando de usar una escala logarítmica como los diagtwigs de margen para mi gráfica de par en el mar. Estoy usando set_xticks () y set_yticks (), pero mis cambios no aparecen. Aquí está mi código a continuación y el gráfico resultante:

import matplotlib.pyplot as plt %matplotlib inline import numpy as np import seaborn as sns import pandas as pd tips = sns.load_dataset('tips') female_waiters = tips[tips['sex']=='Female'] def graph_joint_histograms(df1): g=sns.jointplot(x = 'total_bill',y = 'tip', data = tips, space = 0.3,ratio = 3) g.ax_joint.cla() g.ax_marg_x.cla() g.ax_marg_y.cla() for xlabel_i in g.ax_marg_x.get_xticklabels(): xlabel_i.set_visible(False) for ylabel_i in g.ax_marg_y.get_yticklabels(): ylabel_i.set_visible(False) x_labels = g.ax_joint.get_xticklabels() x_labels[0].set_visible(False) x_labels[-1].set_visible(False) y_labels = g.ax_joint.get_yticklabels() y_labels[0].set_visible(False) y_labels[-1].set_visible(False) g.ax_joint.set_xlim(0,200) g.ax_marg_x.set_xlim(0,200) g.ax_joint.scatter(x = df1['total_bill'],y = df1['tip'],data = df1,c = 'y',edgecolors= '#080808',zorder = 2) g.ax_joint.scatter(x = tips['total_bill'],y = tips['tip'],data = tips, c= 'c',edgecolors= '#080808') ax1 =g.ax_marg_x.get_axes() ax2 = g.ax_marg_y.get_axes() ax1.set_yscale('log') ax2.set_xscale('log') ax1.set_yscale('log') ax2.set_xscale('log') ax2.set_xlim(1e0, 1e4) ax1.set_ylim(1e0, 1e3) ax2.xaxis.set_ticks([1e0,1e1,1e2,1e3]) ax2.xaxis.set_ticklabels(("1","10","100","1000"), visible = True) plt.setp(ax2.get_xticklabels(), visible = True) colors = ['y','c'] ax1.hist([df1['total_bill'],tips['total_bill']],bins = 10, stacked=True,log = True,color = colors, ec='black') ax2.hist([df1['tip'],tips['tip']],bins = 10,orientation = 'horizontal', stacked=True,log = True,color = colors, ec='black') ax2.set_ylabel('') 

Cualquier idea será altamente apreciada.

Aquí está el gráfico resultante:

Debería obtener un error de la línea g.ax_marg_y.get_axes() ya que un eje no tiene un método get_axes() . Corrigiendo por eso

 ax1 =g.ax_marg_x ax2 = g.ax_marg_y 

Debería darte la ttwig deseada. Desafortunadamente, las marcas de verificación para el eje de registro se sobrescriben con el argumento log=True del histogtwig. Por lo tanto, puede omitir eso (ya que de todos modos ya estableció los ejes para registrar la escala) o necesita establecer las tags después de llamar a hist .

 import matplotlib.pyplot as plt import seaborn as sns tips = sns.load_dataset('tips') def graph_joint_histograms(tips): g=sns.jointplot(x = 'total_bill',y = 'tip', data = tips, space = 0.3,ratio = 3) g.ax_joint.cla() g.ax_marg_x.cla() g.ax_marg_y.cla() for xlabel_i in g.ax_marg_x.get_xticklabels(): xlabel_i.set_visible(False) for ylabel_i in g.ax_marg_y.get_yticklabels(): ylabel_i.set_visible(False) x_labels = g.ax_joint.get_xticklabels() x_labels[0].set_visible(False) x_labels[-1].set_visible(False) y_labels = g.ax_joint.get_yticklabels() y_labels[0].set_visible(False) y_labels[-1].set_visible(False) g.ax_joint.set_xlim(0,200) g.ax_marg_x.set_xlim(0,200) g.ax_joint.scatter(x = tips['total_bill'],y = tips['tip'],data = tips, c = 'y',edgecolors= '#080808',zorder = 2) g.ax_joint.scatter(x = tips['total_bill'],y = tips['tip'],data = tips, c= 'c',edgecolors= '#080808') ax1 =g.ax_marg_x ax2 = g.ax_marg_y ax1.set_yscale('log') ax2.set_xscale('log') ax2.set_xlim(1e0, 1e4) ax1.set_ylim(1e0, 1e3) ax2.xaxis.set_ticks([1e0,1e1,1e2,1e3]) ax2.xaxis.set_ticklabels(("1","10","100","1000"), visible = True) plt.setp(ax2.get_xticklabels(), visible = True) colors = ['y','c'] ax1.hist([tips['total_bill'],tips['total_bill']],bins = 10, stacked=True, color = colors, ec='black') ax2.hist([tips['tip'],tips['tip']],bins = 10,orientation = 'horizontal', stacked=True, color = colors, ec='black') ax2.set_ylabel('') graph_joint_histograms(tips) plt.show() 

introduzca la descripción de la imagen aquí