如何在python中创建PI图

2024-04-25 17:57:33 发布

您现在位置:Python中文网/ 问答频道 /正文

各位Python专家

圆周率图表由于列名太长和切片太小而不能很好地显示出来。在这个示例中,您可以看到我有6个bucket,但在PI图表中,只有5个片段可见。即使是标有切片(右上)和顶部的文本也会相互重叠。表格宽度也不足以容纳列内容。你能建议一下处理这种情况的最佳方法吗?我是python的新手。我正在使用anacondapython3.6。你知道吗

代码:

import pandas as pd
import matplotlib.pyplot as plt
from pandas.tools.plotting import table

raw_data = {'FLAG' : ['AT-NBBO', 'BETTER-THAN-NBBO', 'ONE-SIDED-QUOTE', 'OUTSIDE-NBBO', 'OUTSIDE-NBBO-DUE-TO-OVERSIZED-BUT-NO-EXECUTION-WITHIN-NBBO', 'OUTSIDE-NBBO-DUE-TO-OVERSIZED-BUT-SOME-EXECUTION_WITHIN_NBBO'],
     'COUNT' : [10840, 8628, 84, 633, 153, 14]
   }
df = pd.DataFrame(raw_data, columns = ['FLAG', 'COUNT'])

plt.figure(figsize=(16,8))
ax1 = plt.subplot(121, aspect='equal')
df.plot(kind='pie', y = 'COUNT', ax=ax1, autopct='%1.1f%%', 
  startangle=90, shadow=False, labels=df['FLAG'], legend = True, 
fontsize=14)


# plot table
ax2 = plt.subplot(122)
plt.axis('off')
tbl = table(ax2, df, loc='right')
tbl.auto_set_font_size(False)
tbl.set_fontsize(20)
plt.show()

输出: Click Here to visualize the Chart


Tags: importpandasdfrawascount图表table
1条回答
网友
1楼 · 发布于 2024-04-25 17:57:33

关于表,您可以调整两个suplot和sublot边距的比率,以便为表留出更多空间。然后还可以更改表列的宽度比。你知道吗

import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import table

raw_data = {'FLAG' : ['AT-NBBO', 'BETTER-THAN-NBBO', 'ONE-SIDED-QUOTE', 'OUTSIDE-NBBO', 'OUTSIDE-NBBO-DUE-TO-OVERSIZED-BUT-NO-EXECUTION-WITHIN-NBBO', 'OUTSIDE-NBBO-DUE-TO-OVERSIZED-BUT-SOME-EXECUTION_WITHIN_NBBO'],
     'COUNT' : [10840, 8628, 84, 633, 153, 14]
   }
df = pd.DataFrame(raw_data, columns = ['FLAG', 'COUNT'])


fig, (ax1,ax2) = plt.subplots(ncols=2,figsize=(16,6), 
      gridspec_kw={"width_ratios":[1,2.]})
fig.subplots_adjust(left=0.05, right=0.97, wspace=0.4)
ax1.set_aspect("equal")
df.plot(kind='pie', y = 'COUNT', ax=ax1, autopct='%1.1f%%', 
  startangle=90, shadow=False, labels=df['FLAG'], legend = True, 
fontsize=14)

ax2.axis("off")
tbl = table(ax2, df, loc='center',colWidths=[0.9,0.10])
print tbl
tbl.auto_set_font_size(False)

plt.show()

enter image description here

相关问题 更多 >