用对数刻度分布和0进行绘图

时间:2020-10-03 01:49:10

标签: python matplotlib data-visualization

我正在尝试绘制概率分布(例如k个事件的概率)。由于在k的较大值下的行为看起来像k ^ {-alpha},因此应在水平轴上将其绘制为对数标度。因此,对数刻度图上的大k是一条直线。

但是发生0。

我想以一种易于解释的方式绘制它。

例如,考虑一个定义的概率,使得p_0 = 0.5并为k= 1, 2, 3, ...设置p_k = Ck^{-2},如果我正确计算了C=3/pi^2。这应该为1,并为k>0生成一条漂亮的直线,但是显然,我不能坚持为0。但是,查看图像的人必须知道0存在并且具有很大的概率,这一点很重要。

我正在使用matplotlib(在python中),但实际上我对我们如何可视化它感兴趣。该实现可以稍后进行排序。

1 个答案:

答案 0 :(得分:1)

为了将0放入图中,您已将symlog应用于x轴,并将log应用于y轴。如果您不熟悉matplotlib,请在此处输入一些代码,然后可以从下面的代码开始。有关详细信息,请检查doc

import numpy as np
import matplotlib.pyplot as plt
n = 100
x = np.arange(0, n)
y = 3/(np.pi*np.pi)/(x[1:])**2
y = np.concatenate([[0.5], y])

fig, ax = plt.subplots(1, 1, figsize=(7.2, 7.2))
ax.plot(x, y, 'x')
ax.set_xlim(-1, n)
ax.set_xscale('symlog')
ax.set_yscale('log')

enter image description here