使用 python 中的 CSV 文件数据绘制热图

Plotting a heatmap using CSV file data in python

我输出嵌套字典变量 all_count_details_dictionary。使用该变量,我使用以下命令将数据保存到 CSV 文件中。

import pandas as pd
csv_path = '../results_v6/output_01.csv'
# creating pandas dataframe using concat mehtod to extract data from dictionary
df = pd.concat([pd.DataFrame(l) for l in all_count_details_dictionary],axis=1).T

# saving the dataframe to the csv file
df.to_csv(csv_path, index=True)

输出的CSV文件如下图

可以使用此 link

下载 CSV 文件

所以我用下面的代码画了一个图

import matplotlib.pyplot as plt

def extract_csv_gen_plot(csv_path):

    length = 1503 #len(dataframe_colums_list)
    data = np.genfromtxt(csv_path, delimiter=",", skip_header=True, usecols=range(3, (length+1)))
    print(data)

    # renaming data axes
    #fig, ax = plt.subplots()
    #fig.canvas.draw()

    #labels =[item.get_text() for item in ax.get_xticklabels()]
    #labels[1] = 'testing'
    #ax.set_xticklabels(labels)

    #ax.set_xticklabels(list)
    #ax.set_yticklabels(list)
    #plt.setp(ax.get_xticklabels(), rotation = 90)


    plt.imshow(data, cmap='hot',interpolation='nearest')
    plt.show()

我试图将列标签和案例详细信息标签放入图表轴中,但没有成功。谁能告诉我还有什么其他最好的方法可以将此 table 绘制成热图?

谢谢!

我推荐使用 Seaborn,它们有一个热图绘图功能,非常适合 Pandas DataFrames

import seaborn as sns

sns.heatmap(data)

https://seaborn.pydata.org/generated/seaborn.heatmap.html

我建议使用 Pandas,标签会自动拾取:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

def extract_csv_gen_plot(csv_path):

    data = pd.read_csv(csv_path, index_col=1)
    data = data.drop(data.columns[[0, 1]], axis=1)
    data.index.names = ['Name']
    g = sns.heatmap(data)
    g.set_yticklabels(g.get_yticklabels(), rotation=0)
    g.set_title('Heatmap')
    plt.tight_layout()
    plt.show()


extract_csv_gen_plot("output_01.csv")