求助:调用plot_density_chart绘制密度图失败,求解决办法
解决密度图绘制失败问题
数据处理代码
import pandas as pd import numpy as np import matplotlib.pyplot as plt data = {'type_sale':[100,200,400,400,200,400,300,200,210,300], 'bool':[0,1,0,1,1,0,1,1,0,1], } df1 = pd.DataFrame(data, columns = ['type_sale', 'bool']) df1['bool']= df1['bool'].astype('int32')
问题说明
你调用的plot_density_chart并非Python可视化库(如matplotlib、seaborn)的内置函数,未提前定义就直接使用会导致运行报错。你的调用代码如下:
plot_density_chart(df1[['type_sale', 'bool']], "bool", 'type_sale', category_var="type_sale", title='prevalence', xlabel='Type_sale', logx="Yes", vline=None, save_figure_name = 'type_sale_prevalence.pdf')
解决方法
以下提供两种可行方案:
方案1:实现自定义plot_density_chart函数
根据你传入的参数需求,实现一个适配的基础版本函数:
import seaborn as sns def plot_density_chart(data, target_var, x_var, category_var=None, title='', xlabel='', logx="Yes", vline=None, save_figure_name=None): plt.figure(figsize=(10,6)) # 按指定类别分组绘制密度曲线 if category_var: for cat_val in data[category_var].unique(): subset = data[data[category_var] == cat_val] sns.kdeplot(subset[x_var], label=f'{category_var}: {cat_val}', fill=True) else: sns.kdeplot(data[x_var], fill=True) # 启用x轴对数刻度 if logx == "Yes": plt.xscale('log') # 添加垂直线(若需要) if vline is not None: plt.axvline(vline, color='red', linestyle='--') # 设置图表标题与轴标签 plt.title(title) plt.xlabel(xlabel) plt.legend() # 保存图表(若指定路径) if save_figure_name: plt.savefig(save_figure_name) plt.show() # 调用自定义函数(注意:原参数中category_var设为type_sale意义不大,改为按bool分组更合理,可按需调整) plot_density_chart(df1[['type_sale', 'bool']], "bool", 'type_sale', category_var="bool", title='prevalence', xlabel='Type_sale', logx="Yes", vline=None, save_figure_name = 'type_sale_prevalence.pdf')
方案2:直接用原生库绘制简化版密度图
如果不需要复杂的自定义参数,直接用seaborn+matplotlib快速实现:
# 按bool分组绘制密度图 groups = df1.groupby('bool') plt.figure(figsize=(10,6)) for name, group in groups: sns.kdeplot(group['type_sale'], label=f'bool={name}', fill=True) plt.xscale('log') plt.title('prevalence') plt.xlabel('Type_sale') plt.legend() plt.savefig('type_sale_prevalence.pdf') plt.show()
内容的提问来源于stack exchange,提问作者silent_hunter
相关产品推荐
相关产品推荐

