81 lines
2.2 KiB
Python
81 lines
2.2 KiB
Python
|
import numpy as np
|
||
|
import pandas as pd
|
||
|
from matplotlib import pyplot as plt
|
||
|
|
||
|
plt.rcParams['font.family'] = ['Microsoft YaHei']
|
||
|
|
||
|
def process(df, col):
|
||
|
df = df[col]
|
||
|
df = df.sort_values(by=col[1]).to_numpy()
|
||
|
name = df[:-1, 0]
|
||
|
data = df[:-1, 1]
|
||
|
dSum = df[-1, 1]
|
||
|
|
||
|
lng = len(data) - 1
|
||
|
value = []
|
||
|
label = []
|
||
|
|
||
|
for k in range(lng):
|
||
|
if data[lng - k] / dSum > 0.01:
|
||
|
value.append(data[lng - k])
|
||
|
label.append(name[lng - k])
|
||
|
else:
|
||
|
break
|
||
|
|
||
|
value.append(dSum - np.sum(value))
|
||
|
label.append('else')
|
||
|
|
||
|
return value, label
|
||
|
|
||
|
df = pd.read_csv('result/anl-P.csv')
|
||
|
|
||
|
value, label = process(df, ['Particle', 'energy deposition'])
|
||
|
plt.title('能量沉积(按粒子划分)')
|
||
|
plt.pie(value, labels=label, autopct='%0.2f%%')
|
||
|
plt.savefig('docs/eDep-P.png')
|
||
|
plt.close()
|
||
|
|
||
|
value, label = process(df, ['Particle', 'absorbed dose'])
|
||
|
plt.title('吸收剂量(按粒子划分)')
|
||
|
plt.pie(value, labels=label, autopct='%0.2f%%')
|
||
|
plt.savefig('docs/aDoes-P.png')
|
||
|
plt.close()
|
||
|
|
||
|
value, label = process(df, ['Particle', 'equivalent dose'])
|
||
|
plt.title('当量剂量(按粒子划分)')
|
||
|
plt.pie(value, labels=label, autopct='%0.2f%%')
|
||
|
plt.savefig('docs/eqDose-P.png')
|
||
|
plt.close()
|
||
|
|
||
|
value, label = process(df, ['Particle', 'effective dose'])
|
||
|
plt.title('有效剂量(按粒子划分)')
|
||
|
plt.pie(value, labels=label, autopct='%0.2f%%')
|
||
|
plt.savefig('docs/efDose-P.png')
|
||
|
plt.close()
|
||
|
|
||
|
df = pd.read_csv('result/anl-O.csv')
|
||
|
|
||
|
value, label = process(df, ['Organ', 'energy deposition'])
|
||
|
plt.title('能量沉积(按器官划分)')
|
||
|
plt.pie(value, labels=label, autopct='%0.2f%%')
|
||
|
plt.savefig('docs/eDep-O.png')
|
||
|
plt.close()
|
||
|
|
||
|
value, label = process(df, ['Organ', 'absorbed dose'])
|
||
|
plt.title('吸收剂量(按器官划分)')
|
||
|
plt.pie(value, labels=label, autopct='%0.2f%%')
|
||
|
plt.savefig('docs/aDoes-O.png')
|
||
|
plt.close()
|
||
|
|
||
|
value, label = process(df, ['Organ', 'equivalent dose'])
|
||
|
plt.title('当量剂量(按器官划分)')
|
||
|
plt.pie(value, labels=label, autopct='%0.2f%%')
|
||
|
plt.savefig('docs/eqDose-O.png')
|
||
|
plt.close()
|
||
|
|
||
|
value, label = process(df, ['Organ', 'effective dose'])
|
||
|
plt.title('有效剂量(按器官划分)')
|
||
|
plt.pie(value, labels=label, autopct='%0.2f%%')
|
||
|
plt.savefig('docs/efDose-O.png')
|
||
|
plt.close()
|