首页 > 解决方案 > Mathplotlib 在函数下的曲线 + 条上绘制 delta

问题描述

我有这个代码:

import matplotlib.pyplot as plt
import numpy as np

gamma = 0.5

p = np.linspace(1/253, 253/253, 253)
y = np.power(p, gamma)

plt.plot(p, y)
plt.xlabel('p')
plt.ylabel('\u03C6(p)')
plt.title(' ')
plt.show()

这给了我这个数字:https ://ibb.co/M7B1PD1

我有这个代码:

p = np.linspace(1/253, 253/253, 253)

b = 0.5
phi_p = np.power((b * p), (b-1))

plt.plot(p, phi_p)
plt.xlabel('p')
plt.ylabel('\u03A6(p)')
plt.title(' ')
plt.show()

这给了我这个数字:https ://ibb.co/5xRR1k6

现在我想要第一个数字:https ://ibb.co/nzdpfNc 和第二个数字: https ://ibb.co/yYCp7HD

因此,在第一张图片中,应该显示曲线的增量,在第二张图片中,应该在曲线下方绘制每个 i in (0,253) 的条形。

有没有办法用 mathplotlib 做到这一点?我有在曲线下绘制直方图的想法,但我没有很好地解决这个问题..

标签: pythonfunctionplotcurve

解决方案


要绘制曲线下的增量,只需一次将数据点配对,然后绘制它。例如

x_data=[1,4,6]
y_data=[2,3,7]
delta_to_plot_x=[1,4,4,6,6]
delta_to_plot_y=[2,2,3,3,7]

这个函数应该可以生成正确的值。

def make_delta_for_plot(x,y):
    new_x=[val for val in x for _ in (0, 1)]
    new_y=[val for val in y for _ in (0, 1)]
    new_x.pop(0)
    new_y.pop(-1)
    return new_x,new_y

对于第二个图,seaborn.distplot可以同时绘制带有直方图的分布(并且它使用 matplotlib,因此它可以与您的其余代码一起正常工作)。链接中有很多例子


推荐阅读