阅读 191

matplotlib绘制饼图、柱形图和折线图(柱形图饼图折线图展示的数据有何区别)

获取数据

数据: 标题 name, 作者 author, 评分 grade, 统计有多少人看过 stats

获得评分最高的10个作者

gradeDict 获取每个作者的平均评分,使用 sorted() 函数获得gradeDict中values最高的前10个数据

屏幕截图 2021-11-19 192206.png

df = pd.read_csv("clean_data.csv")
gradeDict = {}
countDict = {}
for author, grade in zip(df.author, df.grade):
    if author not in countDict.keys():
        countDict[author] = 1
        gradeDict[author] = grade
    else:
        countDict[author] = countDict[author] + 1
        gradeDict[author] = gradeDict[author] + grade
for key in gradeDict.keys():
    gradeDict[key] = gradeDict[key] / countDict[key]
gradeList = sorted(gradeDict.items(), key=lambda x: x[1], reverse=True)[0:10]
countList = sorted(countDict.items(), key=lambda x: x[1], reverse=True)[0:10]


labels = []
values = []
for i in countList:
    labels.append(i[0])
    values.append(i[1])复制代码

labels和values的输出结果

屏幕截图 2021-11-19 192609.png

饼图

explode 表示各个扇形之间的间隔,默认值为0

explode = [0.05]
for i in range(1, 10):
    explode.append(0.02)复制代码

改变中文字体样式,这里设置为SimHei字体,也可以换成其他,否则会乱码

plt.rcParams['font.sans-serif'] = 'SimHei'复制代码

绘制饼图,autopct 设置饼图内各个扇形百分比显示格式, %0.2f%% 两位小数百分比。pctdistance指定 autopct 的位置刻度,默认值为 0.6, 百分比距离圆心的位置,值越小越靠近圆心, labeldistance标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如  <1则绘制在饼图内侧。也就是改图中作者的位置

plt.savefig将该图保存为图片,但一定要放在plt.show()前面,否则保存会是空白

plt.pie(values, labels=labels, explode=explode, autopct="%.2f%%", pctdistance=0.7)
plt.title("评分前十名发布的文章个数")
plt.savefig("饼图.png")
plt.show()复制代码

饼图.png

柱形图

plt.bar绘制水平方向的柱形图,plt.barh绘制垂直方向的柱形图, 可以通过color来改变柱形图颜色或者各个柱形的颜色;设置柱形图宽度,bar()  方法使用 width 设置,barh()  方法使用 height 设置

# plt.barh(range(len(labels)), values, tick_label=labels)
# plt.bar(range(len(labels)), values, tick_label=labels, color="#4CAF50")
plt.bar(range(len(labels)), values, tick_label=labels)复制代码

plt.xticks设置x轴上的标签,默认是有的,这里改变标签的角度为45度, plt.yticks可以改变y轴标签的刻度,使更美观; plt.text显示柱形图上的具体数字

plt.xticks(range(len(labels)), labels, rotation=45)
plt.yticks([0, 2, 4, 6, 8, 10])
for x, y in zip(range(len(labels)), values):
    plt.text(x, y+0.1, "%d" % y, ha="center")
plt.title("评分前十名发布的文章个数")
plt.xlabel("作者")
plt.ylabel("文章数")
plt.show()复制代码

柱形图.png

折线图

label=u'111'图例数据,要加上plt.legend()才能显示出来;例如 'go-' 是绿色圆点实线

# 模拟数据
labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
values222 = [5, 7, 9, 7, 5, 3, 4, 8, 6, 3]
plt.plot(labels, values, 'go-', label=u'111')
plt.plot(labels, values222, 'b*-', label=u'222')
plt.xticks(labels)
for x, y in zip(range(len(labels)), values):
    plt.text(x, y+0.1, "%.2f" % y, ha="center")
plt.legend()  # 让图例生效
plt.show()复制代码

折线图.png

戛然而止???????????? 溜了溜了


作者:d粥
链接:https://juejin.cn/post/7032461705779085326


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐