You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Qlik Sense中基于自定义条件创建条形图的技术需求

实现Pass/Fail计数条形图的完整方案

步骤1:数据预处理(按规则生成标记)

先确保日期列是datetime类型,再按规则生成关键字段:

  • 取date_a与date_b中的较小值作为imp_date
  • 计算date_c与imp_date的天数差,差值<60标记为pass,否则为fail

步骤2:代码实现(基于Pandas+Matplotlib)

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 示例数据(替换为你的真实数据即可)
data = {
    'date_a': ['2023-01-01', '2023-03-15', '2023-05-20', '2023-02-10'],
    'date_b': ['2023-01-10', '2023-03-01', '2023-06-01', '2023-02-05'],
    'date_c': ['2023-03-01', '2023-04-20', '2023-07-15', '2023-04-20']
}
df = pd.DataFrame(data)

# 转换日期列为datetime类型
df['date_a'] = pd.to_datetime(df['date_a'])
df['date_b'] = pd.to_datetime(df['date_b'])
df['date_c'] = pd.to_datetime(df['date_c'])

# 计算imp_date:取date_a和date_b的较小值
df['imp_date'] = np.where(df['date_a'] < df['date_b'], df['date_a'], df['date_b'])

# 计算天数差并标记Pass/Fail
df['result'] = np.where((df['date_c'] - df['imp_date']).dt.days < 60, 'pass', 'fail')

# 统计Pass/Fail的计数(确保pass和fail都被统计,缺失则补0)
result_counts = df['result'].value_counts().reindex(['pass', 'fail'], fill_value=0)

步骤3:绘制条形图

# 设置绘图风格
plt.style.use('seaborn-v0_8')

# 创建条形图
result_counts.plot(kind='bar', color=['#2ecc71', '#e74c3c'], width=0.6)

# 添加标签和标题
plt.xlabel('结果')
plt.ylabel('计数')
plt.title('Pass/Fail 数量统计')
plt.xticks(rotation=0)  # 保持X轴标签水平

# 在条形上显示数值标签
for i, v in enumerate(result_counts):
    plt.text(i, v + 0.1, str(v), ha='center')

plt.tight_layout()
plt.show()

关键说明

  • 若你的日期格式不是YYYY-MM-DD,需在pd.to_datetime中指定format参数(如format='%d/%m/%Y')
  • 若差值需要按小时/分钟计算,将.dt.days替换为.dt.total_seconds()/3600(小时)或.dt.total_seconds()/60(分钟),同时调整判断阈值

内容的提问来源于stack exchange,提问作者Zeren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:35:08