2

这个问题与 Pandas 中的Visually separator bar chart clusters有点相关

我正在阅读并绘制 tmp.csv 文件:

pol1 pol2 pol3
perim 0.54 0.64 0.40
mst 0.08 0.12 0.12
treeadd 0.25 0.34 0.35
health 0.14 0.17 0.17
bisort 0.48 0.56 0.56
em3d 0.14 0.17 0.17

g721d 1.41 2.58 2.58
mesa 1.16 1.8 1.8
epic 1.82 2.43 2.43
jpege 1.18 1.68 1.68

gzip 1.15 1.43 1.45
vpr 0.19 0.24 0.24
gcc 0.82 1.11 1.15
mcf 0.05 0.05 0.05
crafty 0.67 1.17 1.17

和:

#!/usr/bin/env python

from pandas import *
import matplotlib.pyplot as plt
from numpy import zeros

# Create original dataframe
df = read_csv('tmp.csv',sep='\s')

print df

df.plot(kind='bar')
plt.show()

我得到:

         pol1  pol2  pol3
perim    0.54  0.64  0.40
mst      0.08  0.12  0.12
treeadd  0.25  0.34  0.35
health   0.14  0.17  0.17
bisort   0.48  0.56  0.56
em3d     0.14  0.17  0.17
nan       NaN   NaN   NaN
g721d    1.41  2.58  2.58
mesa     1.16  1.80  1.80
epic     1.82  2.43  2.43
jpege    1.18  1.68  1.68
nan       NaN   NaN   NaN
gzip     1.15  1.43  1.45
vpr      0.19  0.24  0.24
gcc      0.82  1.11  1.15
mcf      0.05  0.05  0.05
crafty   0.67  1.17  1.17

和:

在此处输入图像描述

注意用空线分隔簇。这就是我想要的效果。有没有办法在 x 轴上用“”替换“nan”标签?

我试过: df.rename(index={'nan': ""})

但是有一个断言失败

assert(new_axis.is_unique)

可能是因为有多个 'nan' 索引 df。想法?

-谢谢

4

1 回答 1

2

而不是修改DataFrame,也许只是改变 matplotlib xtick 标签:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('tmp.csv', sep = '\s')
df.plot(kind='bar')
locs, labels = plt.xticks()
plt.xticks(locs, [d if d==d else '' for d in df.index], rotation = 25)
plt.show()

在此处输入图像描述

于 2013-01-06T11:28:28.560 回答