And*_*ndy 8 python colors matplotlib
我有一个Pandas数据帧,我想将其绘制为matplotlib表.到目前为止,我有一部分使用以下代码:
import numpy as np
randn = np.random.randn
from pandas import *
idx = Index(arange(1,11))
df = DataFrame(randn(10, 5), index=idx, columns=['A', 'B', 'C', 'D', 'E'])
vals = np.around(df.values,2)
fig = plt.figure(figsize=(15,8))
ax = fig.add_subplot(111, frameon=True, xticks=[], yticks=[])
the_table=plt.table(cellText=vals, rowLabels=df.index, colLabels=df.columns,
colWidths = [0.03]*vals.shape[1], loc='center')
table_props = the_table.properties()
table_cells = table_props['child_artists']
clm = cm.hot(vals)
for cell in table_cells:
cell.set_height(0.04)
# now i would like to set the backgroundcolor of the cell
Run Code Online (Sandbox Code Playgroud)
在这结束时,我想根据色彩图设置单元格的背景颜色 - 但是如何在没有索引的clm数组中查找它?
另一个问题:我可以以某种方式将格式字符串传递给表,以便将文本格式化为2位小数吗?
Andy,任何提示都表示赞赏
HYR*_*YRY 13
您可以使用plt.Normalize()一定要规范你的数据,以及标准化的数据传递给Colormap对象,例如plt.cm.hot().
plt.table()有一个参数cellColours,用于相应地设置单元格的背景颜色.
因为cm.hot将黑色映射到最小值,所以在创建规范化对象时增加了值范围.
这是代码:
from matplotlib import pyplot as plt
import numpy as np
randn = np.random.randn
from pandas import *
idx = Index(np.arange(1,11))
df = DataFrame(randn(10, 5), index=idx, columns=['A', 'B', 'C', 'D', 'E'])
vals = np.around(df.values,2)
norm = plt.Normalize(vals.min()-1, vals.max()+1)
colours = plt.cm.hot(normal(vals))
fig = plt.figure(figsize=(15,8))
ax = fig.add_subplot(111, frameon=True, xticks=[], yticks=[])
the_table=plt.table(cellText=vals, rowLabels=df.index, colLabels=df.columns,
colWidths = [0.03]*vals.shape[1], loc='center',
cellColours=colours)
plt.show()
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
11406 次 |
| 最近记录: |