我的问题很简单:我想使用Seaborn模块可视化多个直方图,但是,由于许多箱子包含很少的计数,我想使用对数刻度来显示垂直轴。
到目前为止我的代码:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.rand(100,2), columns=['A','B'])
df = pd.melt(df, var_name='Category')
g = sns.FacetGrid(df, col='Category', sharex=True, sharey=False, aspect=1.5)
g = g.map(plt.hist, "value", color="r")
如何将垂直轴更改为对数刻度(以最'pythonic'/'seabornic'方式)?我已经查看了各种答案,但对我到目前为止找到的答案并不满意。
更新 在答案here之后添加以下代码会使我的酒吧消失:
g.fig.get_axes()[0].set_yscale('log')
更新II: 以下代码修复了我的问题:
df = pd.DataFrame(np.random.rand(100,2), columns=['A','B'])
df = pd.melt(df, var_name='Category')
g = sns.FacetGrid(df, col='Category', sharex=True, sharey=False, aspect=1.5)
g = g.map(plt.hist, "value", color="r", log=True)
答案 0 :(得分:0)
我刚刚添加了最后几行:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.rand(100,2), columns=['A','B'])
df = pd.melt(df, var_name='Category')
g = sns.FacetGrid(df, col='Category', col_wrap=2, sharex=True, sharey=False, aspect=1.5)
g = g.map(plt.hist, "value", color="r")
g.axes[0].set_yscale('log')
g.axes[1].set_yscale('log')