利用pandas,matplotlib画饼图
- 前言
今天没得前言
这样的数据:
先画一个最简单的饼图:
# @DATE : 2021-1-3
# @TIME : 13:36
# @USER : kirin
import pandas as pd
import matplotlib.pyplot as plt
csv = pd.read_csv("data/26_.csv")
csv['a'].plot.pie()
plt.show()
结果:
这个图中旁边的的数字显示的其实是csv
的index,因为在这里我没有设置index
文件读取后设置index
:
# 为dataframe设置index:
csv.set_index('from', inplace=True)
# 或者你也可以在读取csv文件的时候设置index:index_col='from'
输出:
为它设置标题,设置y轴(不得不说,饼图有y轴吗),设置标题:
# 设置标题和y轴:
plt.title('It\'s a title', fontsize=16, fontweight='bold')
plt.ylabel('2017', fontsize=16, fontweight='bold')
结果:
如果此时你按照升序进行排列,会发现它饼图是按照逆时针排列的:
# 按照升序排序
csv.a.sort_values().plot.pie()
结果:
如果想要它顺时针排列:
# 按照升序排序并按照顺时针排列
# counterclock:是否逆时针
csv.a.sort_values().plot.pie(counterclock=False)
结果:
如果想要修改起始点:
# 按照升序排序并按照顺时针排列,再设置个起始点
csv.a.sort_values().plot.pie(counterclock=False, startangle=-270)
结果:
代码的笔记:
# KIRIN
# 2021-1-5
# 14:22
# 绘制饼图
import pandas as pd
import matplotlib.pyplot as plt
csv = pd.read_csv("data/26_.csv")
# 此时发现它的侧边写的是id(此时显示的是index),而不是 from 列的名称,
# 为dataframe设置index:
csv.set_index('from', inplace=True)
# 或者你也可以在读取csv文件的时候设置index:index_col='from'
print(csv)
# 此时是逆时针的图
# csv['a'].plot.pie()
# 如果要使用的列明是数字,则无法使用下列的读取方法:
# csv.a.plot.pie(fontsize=18)
# 顺时针排序:
# csv.a.sort_values(ascending=True).plot.pie(fontsize=18)
# 起始点是饼图的右顶点
# 设置起始点为饼图的上顶点:
# csv.a.sort_values(ascending=True).plot.pie(fontsize=18, startangle=-270)
# 或者使用:
# counterclock:逆时针
csv.a.sort_values(ascending=True).plot.pie(fontsize=18, counterclock=False, startangle=-270)
# 优化:
plt.title('It\'s a title', fontsize=16, fontweight='bold')
# csv.a.plot.pie()
plt.ylabel('2017', fontsize=16, fontweight='bold')
# plt.tight_layout()
plt.show()