XLSX Writer Python- 3色标,数字为中点

我正在尝试在XLSX书写器中使用3中间值为0的中间值进行条件格式化。 我希望所有的负值从红色(最低数字)到黄色(当数值为零时),所有正数从黄色(零)到绿色(最高)。

当我尝试下面的内容时,缩放比例会全部搞乱

在Excel中看起来像下面的东西:

在这里输入图像说明

我可以弄清楚在XLSX编写器中如何做一个3色标,但似乎没有一个选项(我可以看到)中点是一个数字:

worksheet.conditional_format('G2:G83', {'type': '3_color_scale', 'min_color': "red", 'mid_color': "yellow", 'max_color': "green"}) 

然后我尝试用一​​种格式应用于大于零的值和小于零的值的标准来分解它

 worksheet.conditional_format('G2:G83', {'type': '2_color_scale', 'criteria': '<', 'value': 0, 'min_color': "red", 'max_color': "yellow"}) worksheet.conditional_format('G2:G83', {'type': '2_color_scale', 'criteria': '>', 'value': 0, 'min_color': "yellow", 'max_color': "green"}) 

但是,这似乎也不工作 – 如果任何人有任何想法..请让我知道..真的很感激它。

完整的示例代码:

 import xlsxwriter workbook = xlsxwriter.Workbook('conditional_format.xlsx') worksheet1 = workbook.add_worksheet() # Add a format. Light red fill with dark red text. format1 = workbook.add_format({'bg_color': '#FFC7CE', 'font_color': '#9C0006'}) # Add a format. Green fill with dark green text. format2 = workbook.add_format({'bg_color': '#C6EFCE', 'font_color': '#006100'}) # Some sample data to run the conditional formatting against. data = [ [34, 72, -38, 30, 75, 48, 75, 66, 84, 86], [-6, -24, 1, -84, 54, 62, 60, 3, 26, 59], [-28, 0, 0, 13, -85, 93, 93, 22, 5, 14], [27, -71, -40, 17, 18, 79, 90, 93, 29, 47], [0, 25, -33, -23, 0, 1, 59, 79, 47, 36], [-24, 100, 20, 88, 29, 33, 38, 54, 54, 88], [6, -57, -88, 0, 10, 26, 37, 7, 41, 48], [-52, 78, 1, -96, 26, -45, 47, 33, 96, 36], [60, -54, -81, 66, 81, 90, 80, 93, 12, 55], [-70, 5, 46, 14, 71, -19, 66, 36, 41, 21], 

]

 for row, row_data in enumerate(data): worksheet1.write_row(row + 2, 1, row_data) worksheet1.conditional_format('B2:B12', {'type': '2_color_scale', 'criteria': '<', 'value': 0, 'min_color': "red", 'max_color': "yellow"}) worksheet1.conditional_format('C2:C12', {'type': '2_color_scale', 'criteria': '>', 'value': 0, 'min_color': "yellow", 'max_color': "green"}) worksheet1.conditional_format('C2:C12', {'type': '2_color_scale', 'criteria': '<', 'value': 0, 'min_color': "red", 'max_color': "yellow"}) worksheet1.conditional_format('D2:D12', {'type': '3_color_scale', 'min_color': "red", 'mid_color': "yellow", 'max_color': "green"}) workbook.close() writer.save() 

这是我得到的:

在这里输入图像说明

正如你所看到的,B列(第一列)没有绿色

C列没有红色

D列有0为绿色

任何想法如何在中间零点做3步缩放?

谢谢

我可以弄清楚如何在XLSX编写器中做一个3色标,但似乎没有选项(我可以看到)中点是一个数字:

您可以使用min_typemid_typemax_type参数来设置以下types:

 min (for min_type only) num percent percentile formula max (for max_type only) 

请参阅条件格式选项

所以在你的情况下,应该是这样的。

 worksheet1.conditional_format('D2:D12', {'type': '3_color_scale', 'min_color': "red", 'mid_color': "yellow", 'max_color': "green", 'mid_type': "num"}) 

但是,我不确定这是否能解决您的整体问题。 也许再加上你的例子,如果它不起作用,然后再打开第二个问题。

有一件事,你将不得不弄清楚如何在Excel中做你想做的事情。 之后,通常更容易找出XlsxWriter中的要求。