我有一组如下所示的数据:
index 902.4 909.4 915.3
n 0.6 0.3 1.4
n.1 0.4 0.3 1.3
n.2 0.3 0.2 1.1
n.3 0.2 0.2 1.3
n.4 0.4 0.3 1.4
DCIS 0.3 1.6
DCIS.1 0.3 1.2
DCIS.2 1.1
DCIS.3 0.2 1.2
DCIS.4 0.2 1.3
DCIS.5 0.2 0.1 1.5
br_1 0.5 0.4 1.4
br_1.1 0.2 1.3
br_1.2 0.5 0.2 1.4
br_1.3 0.5 0.2 1.6
br_1.4 1.4
使用列[0]的常规python索引。以下是我在Stackoverflow成员的帮助下编写的代码:
nh = pd.ExcelFile(file)
df = pd.read_excel(nh)
df = df.set_index('Samples').transpose()
df = df.reset_index()
df_n = df.loc[df['index'].str.startswith('n')]
df_DCIS = df.loc[df['index'].str.startswith('DCIS')]
df_br1234 = df.loc[df['index'].str.startswith('br')]
#plt.tight_layout()
for i in range(1, df.shape[1]):
plt.figure()
df_n.iloc[:, i].hist(histtype='step', color='k', label='N')
df_DCIS.iloc[:, i].hist(histtype='step', color='r', label='DCIS')
df_br1234.iloc[:, i].hist(histtype='step', color='orange', label='IDC')
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5), fancybox=True, shadow=True)
plt.title("Histograms for " + df.columns[i], loc='center')
plt.show()
这会创建多个具有截断图例的图形(当图形由pycharm制作时,这不会被切断)。但是,plt.title会给出一条错误消息,指出TypeError:必须是str,而不是float。我确实理解不同数据帧的列是浮点数,当我输入print(df.columns)时,它表示dtype是对象。有没有办法将float对象转换为str?我尝试使用
plt.title("Histograms for " + df.columns[i].astype('str'))
但它说浮动对象没有属性类型。
答案 0 :(得分:1)
尝试
plt.title("Histograms for {0:.2f}".format(df.columns[i]))
大括号内的字符来自Format Specification Mini-Language。此示例格式化一个带有2个小数位的浮点数。如果您点击链接,您会看到很多其他选项。
答案 1 :(得分:1)
您可以使用:
plt.title("Histograms for " + str(df.columns[i]))
答案 2 :(得分:1)
如果你不想将这些情节连在一起,我建议完全避免subplots()
。相反,用plt.show()
:
cols = ["902.4", "909.4", "915.3"]
data = [{"df":df_n, "color":"k", "label":"N"},
{"df":df_DCIS, "color":"r", "label":"DCIS"},
{"df":df_br1234, "color":"orange", "label":"IDC"}]
for col in cols:
for dataset in data:
dataset["df"][col].hist(histtype='step',
color=dataset["color"],
label=dataset["label"])
plt.title(f"{dataset['label']} for {col}")
plt.savefig(f"{dataset['label']}_for_{col}_plot.png")
plt.show()