gpt4 book ai didi

python - log2 轴不适用于 matplotlib/seaborn 中的直方图

转载 作者:行者123 更新时间:2023-11-28 22:33:09 25 4
gpt4 key购买 nike

当使用 matplotlib/seaborn 绘制直方图时,我想将 x 轴更改为 log2 比例。绘制的数据是 here

当我获取值的 log2 并制作直方图时它可以工作,但是如果我绘制未记录的值并使用 set_xscale 更改 x 轴,它会给出错误的结果。代码是:

import numpy as np
import seaborn as sns
import matplotlib.pylab as plt

df = pandas.read_table("data.csv",sep="\t")
plt.figure()
sns.set_style("ticks")
ax1 = plt.subplot(2, 1, 1)
plt.hist(df["y"])
ax1.set_xscale("log", basex=2)
ax2 = plt.subplot(2, 1, 2)
plt.hist(np.log2(df["y"]))

剧情:

enter image description here

这是一个错误还是我错误地更改了轴?

最佳答案

两者都不是!看看如果你增加 bins 的数量会发生什么:

plt.hist(df["y"], bins = 300)
ax1.set_xscale("log", basex=2)
ax2 = plt.subplot(2, 1, 2)
plt.hist(np.log2(df["y"]), bins=300)

logbins

直方图的数据相同,但在顶部情况下,bin 大小分布仍然是线性

如何使两个案例理想化?将日志空间中的自定义 bin 大小传递给 plt.hist:

plt.figure()
sns.set_style("ticks")
ax1 = plt.subplot(2, 1, 1)
logbins = np.logspace(np.log2(df["y"].min()),
np.log2(df["y"].max()),
300, base=2)
plt.hist(df["y"], bins = logbins)
ax1.set_xscale("log", basex=2)
ax2 = plt.subplot(2, 1, 2)
plt.hist(np.log2(df["y"]), bins=300)

fixed

这两个情节之间仍然存在一些细微差别,但我相信它们与您的原始问题无关。

关于python - log2 轴不适用于 matplotlib/seaborn 中的直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40208054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com