如何做到全图保存,且在索引处表现为Excel中的标题


from pylab import mpl
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

mpl.rcParams["font.sans-serif"] = ["SimHei"]

# 读取数据
# 选择Excel文件
wine = pd.read_excel("E:\\秦皇岛海上平台项目\\关联度分析1.xlsx")
wine.head()

# 无量纲化
def dimensionlessProcessing(df):
    #创建Dataframe(DataFrame是带有标签轴(行和列)的二维大小可变的,可能是异构的表格数据结构)
    newDataFrame = pd.DataFrame(index=df.index)
    #显示列表索引
    columns = df.columns.tolist()
    for c in columns:
        d = df[c]
        MAX = d.max()
        MIN = d.min()
        MEAN = d.mean()
        newDataFrame[c] = ((d - MEAN) / (MAX - MIN)).tolist()
    return newDataFrame

def GRA_ONE(gray, m=0):
    # 读取为df格式
    gray = dimensionlessProcessing(gray)
    # 标准化

    #取m列
    std = gray.iloc[:, m]  # 为标准要素

    #axis = 1  表示删除列,inplace=True, 直接从内部删除
    gray.drop(str(m),axis=1,inplace=True)
    ce = gray.iloc[:, 0:]  # 为比较要素
    shape_n, shape_m = ce.shape[0], ce.shape[1]  # 计算行列,shape[0]读取矩阵第一维度的长度,shape[1]读取矩阵第二维度的长度

    # 与标准要素比较,相减
    a = np.zeros([shape_m, shape_n])
    for i in range(shape_m):
        for j in range(shape_n):
            a[i, j] = abs(ce.iloc[j, i] - std[j]) #abs() 函数返回数字的绝对值

    # 取出矩阵中最大值与最小值
    c, d = np.amax(a), np.amin(a)

    # 计算值
    result = np.zeros([shape_m, shape_n])
    for i in range(shape_m):
        for j in range(shape_n):
            result[i, j] = (d + 0.5 * c) / (a[i, j] + 0.5 * c)

    # 求均值,得到灰色关联值,并返回
    result_list = [np.mean(result[i, :]) for i in range(shape_m)]
    result_list.insert(m,1) #将result_list插入
    return pd.DataFrame(result_list)

# 调用GRA_ONE,求得所有因素之间的灰色关联值
def GRA(DataFrame):
    df = DataFrame.copy()
    list_columns = [
        str(s) for s in range(len(df.columns)) if s not in [None]
    ]
    df_local = pd.DataFrame(columns=list_columns)
    df.columns=list_columns
    for i in range(len(df.columns)):
        df_local[df_local.columns[i]] = GRA_ONE(df, m=i)[0]
    return df_local


import seaborn as sns


def ShowGRAHeatMap(DataFrame):
    colormap = plt.cm.RdBu
    ylabels = DataFrame.columns.values.tolist()
    f, ax = plt.subplots(figsize=(14, 14))
    ax.set_title('GRA HeatMap')

    # 设置展示一半,如果不需要注释掉mask即可
    mask = np.zeros_like(DataFrame)
    mask[np.triu_indices_from(mask)] = True

    with sns.axes_style("white"):
        sns.heatmap(DataFrame,
                    cmap="YlGnBu",
                    annot=True,
                    mask=mask,
                    )
    plt.show()


data_wine_gra = GRA(wine)
ShowGRAHeatMap(data_wine_gra)

半图:

img

全图:

img

如何做到全图保存,且在索引处表现为Excel中的标题

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7634036
  • 你也可以参考下这篇文章:如何将列表中的子列表以列或者以行的形式写入Excel中
  • 除此之外, 这篇博客: 【excel函数小技巧】多种前置条件下的中位数该如何计算?中的 一、遇到的问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 老板安排了一个紧急的报表任务,报表源数据如下图1,要求把不同岗位和不同级别的工龄中位值分别计算出来统计成表格。虽然不会,很着急,但是身为打工人也只能老老实实去查,去学了。

    图1

  • 您还可以看一下 李发展老师的手把手学习Excel电子表格课程中的 如何在Excel自选图形中显示公式的数值小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,我们需要将问题拆解为以下几个步骤: 1. 读取Excel中的标题数据 2. 将图像保存为文件 3. 在保存的图像中添加索引和标题

    以下是解决该问题的具体步骤和代码实现:

    步骤1: 读取Excel中的标题数据 首先,我们需要使用openpyxl库读取Excel文件中的标题数据。根据参考资料中的代码示例,我们可以创建一个类DoExcel来操作Excel文件,该类包含一个方法get_excel()来读取Excel中的测试标题数据。

    import openpyxl
    
    class DoExcel:
        """操作Excel"""
    
        def __init__(self, excel_name, sheet_name):
            self.excel_name = excel_name
            self.sheet_name = sheet_name
    
        def get_excel(self):  # 从Excel读取测试数据
    
            '''创建一个列表,用来保存标题数据'''
            title_list = []
    
            wb = openpyxl.load_workbook(self.excel_name)
            sheet = wb.get_sheet_by_name(self.sheet_name)
    
            '''读取第一行的标题数据'''
            for i in range(1, sheet.max_column+1):
                title_list.append(sheet.cell(1, i).value)
    
            '''返回保存了标题数据的列表 title_list'''
            return title_list
    

    步骤2: 将图像保存为文件 接下来,我们需要将图像保存为文件。可以使用Pillow库中的Image类来处理图像,并使用save方法将图像保存为文件。

    from PIL import Image
    
    # 图像处理部分代码...
    
    # 将图像保存为文件
    image.save("path/to/save/image.jpg")
    

    步骤3: 在保存的图像中添加索引和标题 最后,我们需要在保存的图像中添加索引和标题。可以使用Pillow库中的ImageDraw类来在图像上绘制索引和标题。

    from PIL import Image, ImageDraw, ImageFont
    
    # 图像处理部分代码...
    
    # 在图像上绘制索引和标题
    draw = ImageDraw.Draw(image)
    font = ImageFont.truetype("path/to/font.ttf", font_size)
    
    # 绘制索引
    draw.text((x, y), index, fill=color, font=font)
    
    # 绘制标题
    draw.text((x, y), title, fill=color, font=font)
    
    # 保存绘制完成的图像
    image.save("path/to/save/image.jpg")
    

    注意:在以上代码中,需要根据实际情况指定保存图像的路径、字体文件的路径、字体大小等参数。

    综上所述,可以通过组合以上步骤和代码来实现将图像完整保存,并在保存的图像中添加索引,在索引处显示Excel中的标题的功能。如果需要更具体的代码实现,请提供更详细的问题描述。