根据乘法结果对两个表格进行颜色编码

根据乘法结果对两个表格进行颜色编码

我正在尝试对两个表格进行颜色编码。样本很差

表格1 A b C
一个* 韋斯特
F 一个* f
G 一个*

表2 A C
A*E 加拿大
F A*F 贝*弗 碳*氟
G 成绩 比格

我想对两个表中的单元格进行颜色匹配,其中表 1 范围 (2:,2:) 中的单元格值乘以表 2 范围 (2:,2:) 中的单元格值位于两个数字 X 和 Y 之间(与表无关)

此问题针对的是 excel 版本 2305

我到目前为止尝试过

=AND(A1*D1>=($G$1-$G$2), A1*D1<=($G$1+$G$2))
作为条件格式,其中 G1 和 G2 是 X 和 Y 的数字,A1 和 D1 是表格的开头

另外这是我在 googlesheets 中使用的 ucrrent 公式

=ARRAYFORMULA(AND((B2:D4*F2:H4)>=X, (B2:D4*F2:H4)<=Y))

b2 和 f2 是每个表的开头

上述解决方案均不起作用,因为它没有达到我的预期。

答案1

所以我意识到这只有当表 1 和表 2 之间存在一个匹配时才有可能

因此我将代码恢复为在两个表之间创建热图

下面的代码是一个python脚本,它为X的值和delta作为方差创建热图,其中乘法的结果应该介于X-Delta和X + Delta之间。它将热图保存在同一目录中名为Table1_res和Table2_res的两个csv文件中。然后它继续使用计算表在初始表上绘制热图

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

table1 = pd.read_csv("table1.csv",index_col=False)
table2 = pd.read_csv("table2.csv",index_col=False)
X = 600
delta = 5

num_rows, num_cols = table1.shape
table1_res = pd.DataFrame(np.zeros((num_rows, num_cols)), columns=table1.columns)
num_rows, num_cols = table2.shape
table2_res= pd.DataFrame(np.zeros((num_rows, num_cols)), columns=table2.columns)

for row1 in range(table1.shape[0]):
    for col1 in range(table1.shape[1]):
        if col1 == 0:
            continue
        cell1 = table1.iloc[row1,col1]
        for row2 in range(table2.shape[0]):
            for col2 in range(table2.shape[1]):
                if col2 == 0:
                    continue
                cell2 = table2.iloc[row2,col2]
                if cell1 * cell2 >= X-delta and cell1 * cell2 <= X + delta:
                    table1_res.iloc[row1,col1] += 1
                    table2_res.iloc[row2,col2] += 1


table1_res.to_csv("table1_res.csv",index=False)
table2_res.to_csv("table2_res.csv",index=False)

#fix index
table1_res = table1_res.iloc[:,1:]
table2_res = table2_res.iloc[:,1:]
table1ylabel =table1.iloc[:,0]
table2ylabel = table2.iloc[:,0]
table1 = table1.iloc[:,1:]
table2 = table2.iloc[:,1:]

# Create a color heatmap using values from table2_subset on table1_subset
colors = ['#FFA500', '#FFFFFF']  # White to orange
cmap = LinearSegmentedColormap.from_list('custom_cmap', colors)

fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 6))

sns.heatmap(table1_res, cmap="Reds", annot=table1, fmt=".1f", cbar=False,ax=axes[0],yticklabels=table1ylabel)
axes[0].set_title('Table 1')
axes[0].set_xlabel('Number of Emitters')
axes[0].set_ylabel('Number of Laterals')
sns.heatmap(table2_res, cmap="Reds", annot=table2, fmt=".1f", cbar=False,ax=axes[1],yticklabels=table2ylabel)
axes[1].set_title('Table 2')
axes[1].set_xlabel('Emitter Flow rate [l/h]')
axes[1].set_ylabel('Irrigation duration [h]')
plt.tight_layout()
plt.show()

该图片是我使用此代码对 X = 600 和 Delta = 5 进行的示例

相关内容