直方图,条形图,饼图

直方图

在 matplotlib 中,可以通过 plt.hist 函数画直方图

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

np.random.seed(100)
hints = np.random.normal(5, 10, 1000)

figure1 = plt.figure(figsize = (10, 5))
figure1.add_subplot(1,1,1)

plt.xlabel("值", fontsize = 14)
plt.ylabel("频率", fontsize = 14)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.title("正态分布的直方图", fontsize=14)

plt.rcParams["font.sans-serif"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False

plt.hist(hints, bins=10, color=[0,0,1])
plt.show()

运行后如下

直方图,条形图,饼图
这里我们顺便说下
bins 的值代表了要把数据分成几组,也就代表了图上一种会有多少个长方形。bins 越大,体现得就越精确,但相应的分布特征可能就越不明显
比如我们把bin改成50

直方图,条形图,饼图
运行后如下:
直方图,条形图,饼图
可以看到,分组变多后,直方图展示了更多关于原始数据的信息,但是也出现了较多的锯齿,但整体仍然是正态分布的形状

属性2

直方图另外一个非常有用的参数就是 edgecolor,即每个长方形的边框颜色
上面的直方图中间区域是一片蓝,有时候并不利于做进一步的数据分析
这个时候我们可以设置 plt.hist 函数的 edgecolor 属性,来让每个长方形都有一个边框颜色


import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

np.random.seed(100)
hints = np.random.normal(5, 10, 1000)

figure1 = plt.figure(figsize = (10, 5))
figure1.add_subplot(1,1,1)

plt.xlabel("值", fontsize = 14)
plt.ylabel("频率", fontsize = 14)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.title("正态分布的直方图", fontsize=14)

plt.rcParams["font.sans-serif"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False

plt.hist(hints, bins=50, color=[0,0,1], edgecolor = [0,0,0])
plt.show()

直方图,条形图,饼图
运行后如下

直方图,条形图,饼图

展示多个直方图

为了模拟多个直方图,我们首先生成另外两个数据源


import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

hints = np.random.normal(5, 10, 1000)
hints_1 = np.random.normal(0, 8, 500)
hints_2 = np.random.normal(15, 10, 800)

figure1 = plt.figure(figsize = (10, 5))
figure1.add_subplot(1,1,1)

plt.xlabel("值",fontsize = 14)
plt.ylabel("频率", fontsize = 14)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.title("正态分布的直方图", fontsize=14)

plt.rcParams["font.sans-serif"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False

plt.hist(hints, bins=50, color=[0,0,1], edgecolor=[0,0,0], alpha = 0.5)

plt.hist(hints_1, bins=50, color=[0,1,0], edgecolor=[0,0,0], alpha = 0.5)

plt.hist(hints_2, bins=50, color=[1,0,0], edgecolor=[0,0,0], alpha = 0.5)

plt.show()

运行如下:

直方图,条形图,饼图

条形图

条形图,又称为柱状图,有的地方也把横版的称为条形图,竖版的称为柱状图,这里我们统称条形图


import matplotlib.pyplot as plt
import numpy as np

math_scores = np.array([71,65,70,96,64])
chinese_scores = np.array([84,75,68,83,57])
english_scores = np.array([55,78,76,91,64])

figure2 = plt.figure(figsize = (10, 5))
figure2.add_subplot(1,1,1)

plt.xlabel("", fontsize = 14)
plt.ylabel("平均分", fontsize = 14)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

plt.title("期中成绩条形图", fontsize=14)

plt.rcParams["font.sans-serif"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False
category = ["一班", "二班", "三班", "四班", "五班"]

index_category = np.arange(len(category))

bar_width = 0.25

plt.bar(index_category - bar_width, chinese_scores, width=bar_width, color=[0,0,1])

plt.bar(index_category, math_scores, width=bar_width, color=[0,1,0])

plt.bar(index_category + bar_width, english_scores, width=bar_width, color=[1,0,0])

plt.show()

运行如下

直方图,条形图,饼图

饼图

plt.pie 函数可以绘制饼图
pie 函数由以下几个关键参数实现功能

  1. x:饼图每一块的占比列表,列表有几个元素就代表饼图分几块
  2. explode:凸出显示,也是一个列表,和 x 一一对应,代表具体某一块是否要凸出显示
  3. colors:列表,和 x 一一对应,代表每一块的颜色
  4. labels:标签文本列表,和 x 一一对应,代表每一块的标题
  5. autopct:代表百分比文本的格式
  6. startangle: 默认饼图是从角度为 0 的位置逆时针开始画,这里可以指定初始角度
  7. labeldistance:文本标签距离饼图的距离
  8. pctdistance:百分比标签距离饼图中心的距离
    假设我们对一个年级的学生,统计历史上得过三好学生称号的情况,完全没得过的占比为 40%, 得过一次的占比为 30%, 二次的为 25%, 三次以上的为 5%。现在我们用饼图表示这个数据,并将得过三次以上的凸出显示
import matplotlib.pyplot as plt

figure5 = plt.figure(figsize = (10, 5))
figure5.add_subplot(1,1,1)

plt.rcParams["font.sans-serif"] = "SimHei"

plt.rcParams["axes.unicode_minus"] = False

category = ["没有得过", "得过一次", "得过二次", "得过三次以上"]
size = [40, 30, 25, 5]

color = ["r", "g", "b", "c"]

explode = [0,0,0,0.1]

plt.pie(size,explode=explode,colors=color,labels=category,labeldistance= 1.1, autopct="%1.1f%%", startangle=90,pctdistance=0.6)
plt.show()

运行如下:

直方图,条形图,饼图

Original: https://blog.csdn.net/qq_41780297/article/details/126809309
Author: 木土雨成
Title: 直方图,条形图,饼图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/768873/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球