【问题标题】:Setting ticks in logscale with seaborn使用 seaborn 以对数刻度设置刻度
【发布时间】:2019-04-14 02:35:09
【问题描述】:

我有两个具有整数值的列表,我想在 python 中使用 seaborn 并排绘制它们的两个直方图:

fig, [ax1, ax2] = plt.subplots(nrows=1, ncols=2, figsize=(16,6))

sns.set(style="whitegrid")
sns.distplot(list1, bins=30, rug=True, kde=False, ax=ax1)
sns.distplot(list2, bins=30, rug=True, kde=False, ax=ax2)
ax1.set_yscale('log')
ax2.set_yscale('log')
plt.show()

剧情如下:

显然,右图包含无用信息,因为条形的高度是整数。因此,我根本没有兴趣查看 0 到 1 之间数字的对数刻度,即我想摆脱 10^{-power}。如何以 10 次方表示法将正确绘图的标签强制为 0、1、10、100 和 1000?就像左边的情节一样。谢谢。

【问题讨论】:

  • 嗯,左右图的符号相同。我不确定我是否理解你想要什么。
  • @ImportanceOfBeingErnest 它们具有相同的符号。然而,这是一个直方图,因此每个条形图都有一个整数高度。所以考虑10^-n是没有用的
  • 您正在绘制分布图。那肯定有远低于 1 的值。
  • > 如何强制正确的情节标签为 0、1、10、100 和 1000 的 10 次方符号?两者都是对数比例,还是您指的是相同的范围?还有 x 轴还是 y 轴?
  • @GlobalTraveler 范围不同,因为右侧图的数据上升到 10^4,而左边的图上升到 10^3。两者都是对数刻度,但在右边有一个无用的对数刻度划分,因为没有信息介于 0 和 1 之间。也就是说,它就像我有一个高度为 10^2 的条形图和另一个高度为 9^2 的条形图,而我有一个比例为 10^-12 的情节。那没用。

标签: matplotlib seaborn


【解决方案1】:

尽管为什么这有效的原因,我发布了一个解决问题的答案。这个想法是为 y 比例设置一个限制:

ax.set_ylim([0.5, 1000])

这会产生正确的情节。

【讨论】:

    猜你喜欢
    • 2013-01-09
    • 1970-01-01
    • 2021-02-22
    • 2022-01-02
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多