如何将Matplotlib直方图与过程能力分析结果一同导出至TXT文件?
问题描述
我用以下代码绘制了直方图:
plt.figure(figsize=(15,10)) plt.hist(Obs1, color="lightgrey", edgecolor="black", density=True)
目前我已经通过以下代码将过程能力分析结果导出到process_results.txt文件:
with open('process_results.txt', "w") as results: results.write("PROCESS CAPABILITY ANALYSIS\n") results.write("-----------------------------------\n") results.write(f"Specifications\n") results.write(f"\nTaget: {Target}\n") results.write(f"LSL: {LSL}\n") results.write(f"USL: {USL}\n")
请问如何将上述直方图也包含到该TXT文件中?
解决方案
由于TXT是纯文本格式,无法直接嵌入图像,你可以采用以下两种思路实现需求:
方案一:保存图片并在TXT中记录路径
- 先将直方图保存为图片文件(如PNG格式):
plt.figure(figsize=(15,10)) plt.hist(Obs1, color="lightgrey", edgecolor="black", density=True) # 可选:添加图表标注 plt.title("Observation Histogram") plt.xlabel("Value") plt.ylabel("Density") # 保存图片到本地 plt.savefig("histogram.png") plt.close() # 关闭画布释放资源
- 修改TXT写入代码,补充图片路径说明:
with open('process_results.txt', "w") as results: results.write("PROCESS CAPABILITY ANALYSIS\n") results.write("-----------------------------------\n") results.write(f"Specifications\n") results.write(f"\nTaget: {Target}\n") results.write(f"LSL: {LSL}\n") results.write(f"USL: {USL}\n") # 添加直方图相关记录 results.write("\n-----------------------------------\n") results.write("HISTOGRAM\n") results.write("对应的直方图已保存为:histogram.png\n")
方案二:生成ASCII艺术直方图(纯文本形式)
如果需要把直方图直接以文本形式嵌入TXT,可通过以下两种方式实现:
方法1:用numpy+原生代码生成ASCII直方图
import numpy as np # 先计算直方图统计数据 counts, bins = np.histogram(Obs1, density=True) bin_centers = (bins[:-1] + bins[1:])/2 # 生成ASCII直方图文本 hist_text = "ASCII Histogram:\n" max_count = counts.max() # 按比例生成星号柱状图 for center, count in zip(bin_centers, counts): bar = '*' * int(count / max_count * 50) hist_text += f"{center:.2f} | {bar} ({count:.4f})\n" # 写入TXT文件 with open('process_results.txt', "w") as results: results.write("PROCESS CAPABILITY ANALYSIS\n") results.write("-----------------------------------\n") results.write(f"Specifications\n") results.write(f"\nTaget: {Target}\n") results.write(f"LSL: {LSL}\n") results.write(f"USL: {USL}\n") # 添加ASCII直方图 results.write("\n-----------------------------------\n") results.write(hist_text)
方法2:用第三方库asciichartpy生成
先安装库:pip install asciichartpy
import asciichartpy # 生成ASCII直方图 hist_ascii = asciichartpy.plot(Obs1, {'height': 10}) # 写入TXT文件 with open('process_results.txt', "w") as results: results.write("PROCESS CAPABILITY ANALYSIS\n") results.write("-----------------------------------\n") results.write(f"Specifications\n") results.write(f"\nTaget: {Target}\n") results.write(f"LSL: {LSL}\n") results.write(f"USL: {USL}\n") # 添加ASCII直方图 results.write("\n-----------------------------------\n") results.write("ASCII Histogram:\n") results.write(hist_ascii + "\n")
内容的提问来源于stack exchange,提问作者user19613662
相关产品推荐
相关产品推荐

