matplotlib Pyplot表格:cellColours“中的每一行必须有2列

yptwkmov  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(302)

我想把一个 Dataframe 转换成表,代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# Create a dataframe
df = pd.DataFrame({'Name':['John','Barry','Irene','Paul','Ricky','Jenny','Tina','Linda','Toby','Peter'],
                   'Age':[19,20,17,19,18,21,19,21,18,20]})

# Create the figure
fig, ax = plt.subplots()

# Define the colors
cmap = {0:'b', 1:'y', 2:'k', 3:'gray'}
cell_colours = []
for n in range(len(df.index)):
    if n<4:
        cell_colours.append(cmap[0])
    elif 4<=n<8:
        cell_colours.append(cmap[1])
    elif 8<=n<12:
        cell_colours.append(cmap[2])
    else:
        cell_colours.append(cmap[3])

# Plot the table
table = ax.table(cellText=df.values, colLabels=df.columns, loc='center', 
                 cellColours=cell_colours)

# Add the table to the figure
fig.add_axes(ax)

# Show the plot
plt.show()

结果是
'值错误:cellColours "中的每一行必须有2列
我做错了什么?

kqqjbcuj

kqqjbcuj1#

它是单元格的颜色,而不是行的颜色。所以如果你有两列,你需要每行两个颜色值。
例如:

for n in range(len(df.index)):
    if n<4:
        cell_colours.append([cmap[0], cmap[0]])
    elif 4<=n<8:
        cell_colours.append([cmap[1], cmap[1]])
    elif 8<=n<12:
        cell_colours.append([cmap[2], cmap[2]])
    else:
        cell_colours.append([cmap[3], cmap[3]])

这种方法允许您根据需要为每列设置不同的颜色。

相关问题