Matplotlib 在函数下的曲线 + 条上绘制增量
Mathplotlib draw delta on curve + bars under function
我有这个代码:
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
因此在第一张图片中应显示曲线的增量,在第二张图片中应在曲线下方绘制 (0,253) 中每个 i 的条。
有没有办法用 mathplotlib 做到这一点?我有想法在曲线下画一个直方图但是我没有很好地解决这个问题..
要绘制曲线下的增量,只需一次配对一个数据点,然后绘制它。例如
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,因此它可以与您的其余代码一起正常工作)。 link
中有很多示例
第二个图我是这样解的:
b = 0.5
p = np.array(np.arange(1/253, 253/253, 1/253))
phi_p = np.power((b * p), (b-1))
x = np.array(np.arange(1/253,253/253,1/253))
liste = []
for i in phi_p:
liste.append(i)
y = liste
plt.plot(p, phi_p, color='orange')
plt.bar(x0, liste, width=(1/253), edgecolor='black')
plt.xlabel('p')
plt.ylabel('\u03A6(p)')
plt.title(' ')
plt.show()
我有这个代码:
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
因此在第一张图片中应显示曲线的增量,在第二张图片中应在曲线下方绘制 (0,253) 中每个 i 的条。
有没有办法用 mathplotlib 做到这一点?我有想法在曲线下画一个直方图但是我没有很好地解决这个问题..
要绘制曲线下的增量,只需一次配对一个数据点,然后绘制它。例如
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,因此它可以与您的其余代码一起正常工作)。 link
第二个图我是这样解的:
b = 0.5
p = np.array(np.arange(1/253, 253/253, 1/253))
phi_p = np.power((b * p), (b-1))
x = np.array(np.arange(1/253,253/253,1/253))
liste = []
for i in phi_p:
liste.append(i)
y = liste
plt.plot(p, phi_p, color='orange')
plt.bar(x0, liste, width=(1/253), edgecolor='black')
plt.xlabel('p')
plt.ylabel('\u03A6(p)')
plt.title(' ')
plt.show()