我使用factorplot(kind="bar")。如何缩放y轴,例如使用对数标度?我试着修改图的坐标轴,但总是以这样或那样的方式弄乱条形图,所以请先尝试您的解决方案,以确保它真的有效。
factorplot(kind="bar")
4bbkushb1#
考虑到你的问题提到了barplot,我想我会为这种类型的图添加一个解决方案,因为它不同于@Jules解决方案中的factorplot。
barplot
factorplot
import matplotlib.pyplot as plt import seaborn as sns sns.set(style="whitegrid") xs = ["First", "First", "Second", "Second", "Third", "Third"] hue = ["Female", "Male"] * 3 ys = [1988, 301, 860, 77, 13, 1] g = sns.barplot(x=xs, y=ys, hue=hue) g.set_yscale("log") _ = g.set(xlabel="Class", ylabel="Survived")
如果你想用非对数的标签来标记y轴,你可以这样做。
import matplotlib.pyplot as plt import seaborn as sns sns.set(style="whitegrid") xs = ["First", "First", "Second", "Second", "Third", "Third"] hue = ["Female", "Male"] * 3 ys = [1988, 301, 860, 77, 13, 1] g = sns.barplot(x=xs, y=ys, hue=hue) g.set_yscale("log") # the non-logarithmic labels you want ticks = [1, 10, 100, 1000] g.set_yticks(ticks) g.set_yticklabels(ticks) _ = g.set(xlabel="Class", ylabel="Survived")
ubof19bj2#
注意:seaborn.factorplot被seaborn.catplot替换,这是一个图形级函数。sns.catplot直接接受log参数。
seaborn.factorplot
seaborn.catplot
sns.catplot
log
在python 3.11.2、matplotlib 3.7.1、seaborn 0.12.2中测试
python 3.11.2
matplotlib 3.7.1
seaborn 0.12.2
import seaborn as sns import matplotlib.pyplot as plt titanic = sns.load_dataset("titanic") g = sns.catplot(x="class", y="survived", hue="sex", data=titanic, kind="bar", height=5, palette="muted", legend=False, log=True) plt.show()
您可以在调用factorplot后使用Matplotlib命令。例如:
g = sns.factorplot(x="class", y="survived", hue="sex", data=titanic, kind="bar", height=5, palette="muted", legend=False) g.fig.get_axes()[0].set_yscale('log') plt.show()
2mbi3lxu3#
如果您在使用以前的解决方案设置对数刻度时遇到消失的条形图的问题,请尝试将log=True添加到seaborn函数调用中。
log=True
使用sns.barplot:
sns.barplot
import seaborn as sns import matplotlib.pyplot as plt titanic = sns.load_dataset("titanic") g = sns.barplot(x="class", y="survived", hue="sex", data=titanic, palette="muted", log=True) g.set_ylim(0.05, 1)
sns.factorplot不再属于seaborn。请参阅此answer的替换。使用sns.factorplot:
sns.factorplot
seaborn
import seaborn as sns import matplotlib.pyplot as plt sns.set(style="whitegrid") titanic = sns.load_dataset("titanic") g = sns.factorplot(x="class", y="survived", hue="sex", kind='bar', data=titanic, palette="muted", log=True) g.ax.set_ylim(0.05, 1)
eblbsuwk4#
Seaborn的catplot不再具有log参数。对于那些寻找更新答案的人,这里是我使用过的最快的解决方案:你必须通过访问axes对象来使用matplotlib的内置支持。
g = sns.catplot(data=df, <YOUR PARAMETERS>) for ax in g.fig.axes: ax.set_yscale('log')
4条答案
按热度按时间4bbkushb1#
考虑到你的问题提到了
barplot
,我想我会为这种类型的图添加一个解决方案,因为它不同于@Jules解决方案中的factorplot
。如果你想用非对数的标签来标记y轴,你可以这样做。
ubof19bj2#
注意:
seaborn.factorplot
被seaborn.catplot
替换,这是一个图形级函数。sns.catplot
直接接受log
参数。在
python 3.11.2
、matplotlib 3.7.1
、seaborn 0.12.2
中测试您可以在调用
factorplot
后使用Matplotlib命令。例如:2mbi3lxu3#
如果您在使用以前的解决方案设置对数刻度时遇到消失的条形图的问题,请尝试将
log=True
添加到seaborn函数调用中。在
python 3.11.2
、matplotlib 3.7.1
、seaborn 0.12.2
中测试使用
sns.barplot
:sns.factorplot
不再属于seaborn
。请参阅此answer的替换。使用
sns.factorplot
:eblbsuwk4#
Seaborn的catplot不再具有
log
参数。对于那些寻找更新答案的人,这里是我使用过的最快的解决方案:你必须通过访问axes对象来使用matplotlib的内置支持。