Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将绘制有两个变量的直方图转换为平滑曲线_Python_Python 2.7_Python 3.x_Matplotlib_Histogram - Fatal编程技术网

Python 将绘制有两个变量的直方图转换为平滑曲线

Python 将绘制有两个变量的直方图转换为平滑曲线,python,python-2.7,python-3.x,matplotlib,histogram,Python,Python 2.7,Python 3.x,Matplotlib,Histogram,下面是生成直方图的代码。有关完整代码,请参阅此 如何将此直方图转换为平滑曲线,曲线下的区域着色/高亮显示 下面是一个简单的例子,可能会对您有所帮助 import numpy as np import pandas as pd import matplotlib.pyplot as plt np.random.seed(123) datas = pd.DataFrame(np.random.randint(0, 2, size=(100, 1)), columns=['diagnosis'])

下面是生成直方图的代码。有关完整代码,请参阅此


如何将此直方图转换为平滑曲线,曲线下的区域着色/高亮显示

下面是一个简单的例子,可能会对您有所帮助

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
np.random.seed(123)
datas = pd.DataFrame(np.random.randint(0, 2, size=(100, 1)), columns=['diagnosis'])
datas['data'] = np.random.randint(0, 100,size=(100, 1))
我使用了numpy的函数,但是您也可以使用带有相同参数的
ax.hist

benign_hist=np.histogram(datas[datas['diagnosis']==0]['data'],bins=np.arange(0, 100, 10))
malignant_hist=np.histogram(datas[datas['diagnosis']==1]['data'],bins=np.arange(0, 100, 10))

fig,ax=plt.subplots(1,1)
ax.fill_between(malignant_hist[1][1:], malignant_hist[0], color='r', alpha=0.5) 
ax.fill_between(benign_hist[1][1:], benign_hist[0], color='b', alpha=0.5)
在上面的示例中,为了方便打印而不是bin中点,我只使用了9个bin边进行演示

在OP的代码中,可以分配
hist\u data=ax.hist(…)
hist_数据[0]包含直方图值,hist_数据包含使用类似

fig, ax=plt.subplots(1,1)
ax.fill_between(hist_data[1][1:],hist_data[0][0],color='g',alpha=0.5)
ax.fill_between(hist_data[1][1:],hist_data[0][1],color='r',alpha=0.5) 

下面是一个简单的例子,可能会对您有所帮助

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
np.random.seed(123)
datas = pd.DataFrame(np.random.randint(0, 2, size=(100, 1)), columns=['diagnosis'])
datas['data'] = np.random.randint(0, 100,size=(100, 1))
我使用了numpy的函数,但是您也可以使用带有相同参数的
ax.hist

benign_hist=np.histogram(datas[datas['diagnosis']==0]['data'],bins=np.arange(0, 100, 10))
malignant_hist=np.histogram(datas[datas['diagnosis']==1]['data'],bins=np.arange(0, 100, 10))

fig,ax=plt.subplots(1,1)
ax.fill_between(malignant_hist[1][1:], malignant_hist[0], color='r', alpha=0.5) 
ax.fill_between(benign_hist[1][1:], benign_hist[0], color='b', alpha=0.5)
在上面的示例中,为了方便打印而不是bin中点,我只使用了9个bin边进行演示

在OP的代码中,可以分配
hist\u data=ax.hist(…)
hist_数据[0]包含直方图值,hist_数据包含使用类似

fig, ax=plt.subplots(1,1)
ax.fill_between(hist_data[1][1:],hist_data[0][0],color='g',alpha=0.5)
ax.fill_between(hist_data[1][1:],hist_data[0][1],color='r',alpha=0.5) 

难道你不能将直方图数据作为一个数组来绘制数组吗?我认为它很可能会创建一种散点图。我尝试了很多方法,但没有一种是我想要的。使用和,在浏览了谷歌图片后,找到了你最喜欢的概率密度函数的图片,找到了合适的候选分布。这可能是你正在寻找一种新的方法。Seaborn直接给你一个显示KDE曲线的图。你不能把直方图数据作为一个数组来绘制数组吗?我想它很可能会创建一种散点图。我尝试了很多方法,但没有一种是我想要的。使用和,在浏览了谷歌图片后,找到了你最喜欢的概率密度函数的图片,找到了合适的候选分布。这可能是你正在寻找一种新的方法。Seaborn直接给你一个显示KDE曲线的曲线。