gpt4 book ai didi

python - 在 matplotlib 中选择 x 值的比例

转载 作者:行者123 更新时间:2023-11-28 16:24:48 25 4
gpt4 key购买 nike

我正在尝试使用 matplotlib 创建直方图。我的 X 值加倍,从 2 - 2048。当我在直方图上绘制它时,一开始有一堆值彼此相邻,然后随着值的上升而展开。因为我知道我不会在两者之间有值,我怎样才能将图表更改为以二的倍数递增?我试过 from matplotlib.pyplot import xticks 但这只会改变显示的内容。

import matplotlib
from numpy.random import randn
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
import random
from matplotlib.pyplot import xticks


def to_percent(y, position):
# Ignore the passed in position. This has the effect of scaling the default
# tick locations.
s = str(100 * y)

# The percent symbol needs escaping in latex
if matplotlib.rcParams['text.usetex'] is True:
return s + r'$\%$'
else:
return s + '%'
z = [2, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
x = [z[random.randint(0, 6)] for i in range(100)]
xticks(z)
plt.xscale('log')
# Make a normed histogram. It'll be multiplied by 100 later.
plt.hist(x, bins=50, normed=True)


# Create the formatter using the function to_percent. This multiplies all the
# default labels by 100, making them all percentages
formatter = FuncFormatter(to_percent)

# Set the formatter
plt.gca().yaxis.set_major_formatter(formatter)

plt.show()

最佳答案

您可以只绘制日志值和格式化程序的日志。它简单多了......

plt.hist(np.log(x), bins=50, normed=True)
plt.xticks(np.log(z), z)

如果您愿意,您也可以使用 base 2 log ...

关于python - 在 matplotlib 中选择 x 值的比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37454723/

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