Python学习-Matplotlib库绘制各类常见统计图(散点图、条形图、直方图、饼状图、极坐标图)

Python学习-Matplotlib库绘制各类统计图

目录

1、散点图绘制及各类参数介绍

1)绘制散点图,特定函数scatter()
2)利用plot()函数绘制散点图

2、绘制条形图及各类参数介绍,bar()

3、绘制直方图及各类参数介绍,hist()

4、绘制饼状图及各类参数介绍,pie()

5、绘制极坐标图

导入库
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=15)  # 导入中文字体,打印中文标签
1、散点图绘制及各类参数介绍
1)绘制散点图,特定函数scatter()

常用参数介绍:
x: x轴坐标;y: y轴坐标;s: 点标记的大小;c: 标记颜色;marker: 标记的形状;alpha: 标记透明度[0,1]
不常用:
cmap: 设置颜色条;norm: 颜色范围归一化;vmin,vmax: 颜色最大最小值;
linewidths: 标记边缘线形状;edgecolors: 标记边缘线颜色

X = np.random.randn(100)  # 生成x轴的100个随机数
Y = np.random.randn(100)  # 生成y轴的100个随机数
plt.figure(1)
plt.title("散点图练习", fontproperties=font)
plt.scatter(x=X, y=Y, s=100, c='y', marker='*', alpha=1, \
            cmap='hot', norm=None, vmin=0, vmax=100, linewidths=None, edgecolors=None)

plt.xlabel('横坐标', fontproperties=font)
plt.ylabel('纵坐标', fontproperties=font)
plt.show()
输出

Python学习-Matplotlib库绘制各类常见统计图(散点图、条形图、直方图、饼状图、极坐标图)_第1张图片

2)利用plot()函数绘制散点图,必须指定图标,且不能有关于画线的指定条件,否则将会画成线
X = np.random.randn(100)  # 生成x轴的100个随机数
Y = np.random.randn(100)  # 生成y轴的100个随机数
plt.figure(2)
plt.plot(X, Y, ".", color='b')
输出

Python学习-Matplotlib库绘制各类常见统计图(散点图、条形图、直方图、饼状图、极坐标图)_第2张图片

2、绘制条形图及各类参数介绍,bar()

参数介绍:
x: x轴坐标(元组、列表、数组);height:条形图高度;width: 条形图宽度
bottom:设置条形基座的y坐标;align: 'center’基座在x位置,'edge’基座左边缘在x位置
alpha:条形图透明度;color:条形图颜色;label:条形图标签

plt.figure(3)
plt.rc('font', family='simhei', size=15)  # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False)  # 该参数解决负号显示的问题
c = ['大一', '大二', '大三', '大四']  # x轴刻度标记
x = np.arange(len(c))*0.8  # x轴刻度数,条形基座中间x位置数
g = [34, 32, 37, 35]  # 条形图高度
b = [32, 31, 38, 40]
g1 = plt.bar(x=x, height=g, width=0.2, bottom=None, alpha=0.8, color='red', label="girl", \
             align='edge', data=None)
"""
x: x轴坐标(元组、列表、数组);height:条形图高度;width: 条形图宽度
bottom:设置条形基座的y坐标;align: 'center'基座在x位置,'edge'基座左边缘在x位置
alpha:条形图透明度;color:条形图颜色;label:条形图标签
"""
b1 = plt.bar([x1+0.2 for x1 in x], height=b, width=0.2, alpha=0.8, color='blue', label="boy", align='edge')
"""
[x1+0.2 for x1 in x]:
for x1 in range(len(x)):
    x[x1] += 1
"""
plt.title('各年级人数统计')
plt.legend()  # 显示图例
plt.ylim(0, 80)  # y轴刻度范围
plt.ylabel('人数')  # y轴标签
plt.xticks([index + 0.2 for index in x], c)  # 显示条形图的标签
plt.xlabel('班级')  # x轴标签

# 在每一个条形图的顶部设置顶值
for r1 in g1:
    height = r1.get_height()
    plt.text(r1.get_x()+r1.get_width()/2, height+1, str(height), ha="center", va="bottom")

for r2 in b1:
    height = r2.get_height()
    plt.text(r2.get_x()+r2.get_width()/2, height+1, str(height), ha="center", va="bottom")

plt.show()
输出

Python学习-Matplotlib库绘制各类常见统计图(散点图、条形图、直方图、饼状图、极坐标图)_第3张图片

3、绘制直方图及各类参数介绍,hist()

参数介绍:
x: x轴坐标(元组、列表、数组);bins:条形数量,也可以是数组[1,2,3,4],第一个条形范围为[1,2);
range: (x.min(), x.max()),概率分布范围上下限;density:True表示归一化处理,形成概率密度计算;
weights:给x所有值赋权重;cumulative:True,从小到大统计、False:从大到小统计
bottom:指定每个条形基座的在x轴的基线位置;histtype:直方图类型,bar、barstacked、step、stepfilled;
align: 指定条形基座的在x轴上相对基线的位置;alpha:条形图透明度;orientation:条形显示方式,horizontal、vertical
rwidth:宽度; log:True,对数刻度;stacked:堆叠;color:直方图颜色;label:直方图标签

plt.figure(4)
plt.rc('font', family='simhei', size=15)  # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False)  # 该参数解决负号显示的问题
data = np.random.randn(1000)
plt.hist(x=data, bins=20, range=None, density=False, weights=None, cumulative=False, bottom=None, \
         histtype='stepfilled', align='mid', alpha=0.9, orientation='vertical', rwidth=None, log=False, \
         color='y', stacked=True, edgecolor='black')
"""
# x: x轴坐标(元组、列表、数组);bins:条形数量,也可以是数组[1,2,3,4],第一个条形范围为[1,2);
range: (x.min(), x.max()),概率分布范围上下限;density:True表示归一化处理,形成概率密度计算;
weights:给x所有值赋权重;cumulative:True,从小到大统计、False:从大到小统计
bottom:指定每个条形基座的在x轴的基线位置;histtype:直方图类型,bar、barstacked、step、stepfilled;
align: 指定条形基座的在x轴上相对基线的位置;alpha:条形图透明度;orientation:条形显示方式,horizontal、vertical
rwidth:宽度; log:True,对数刻度;stacked:堆叠;color:直方图颜色;label:直方图标签
"""
plt.xlabel('概率分布区间')
plt.ylabel('频数or频率')
plt.title('分布直方图')

plt.show()
输出

Python学习-Matplotlib库绘制各类常见统计图(散点图、条形图、直方图、饼状图、极坐标图)_第4张图片

4、绘制饼状图及各类参数介绍,pie()

参数介绍:
explode:切片到圆心的距离
shadow:阴影
radius: 半径

plt.figure(5)
plt.rc('font', family='simhei', size=15)  # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False)  # 该参数解决负号显示的问题
lab = ['感冒', '肠胃不适', '过敏', '其它']
data = [48, 21, 18, 13]
color = ['red', 'green', 'blue', 'yellow']
explode = (0.1, 0, 0, 0)
plt.pie(x=data, explode=explode, labels=lab, colors=color,  autopct='%1.1f%%', pctdistance=0.6, shadow=False, \
        labeldistance=1.1, startangle=0, radius=0.5, counterclock=True, wedgeprops=None, textprops=None, \
        center=(0, 0), frame=None, rotatelabels=True)

"""
explode:切片到圆心的距离
shadow:阴影
radius: 半径
"""

plt.title('生病人数及原因统计')
plt.legend()  # 产生图例

plt.show()
输出

Python学习-Matplotlib库绘制各类常见统计图(散点图、条形图、直方图、饼状图、极坐标图)_第5张图片

5、绘制极坐标图

注:画极坐标时,需要指定subplot()的参数projection=‘polar’

plt.figure(6)
t = np.arange(0, 2*np.pi, 0.2)
ax1 = plt.subplot(projection='polar')
ax1.plot(t, t/6, '--', lw=2)

plt.show()
输出

Python学习-Matplotlib库绘制各类常见统计图(散点图、条形图、直方图、饼状图、极坐标图)_第6张图片

你可能感兴趣的:(python,IT,python,数据可视化,数学建模,matplotlib,概率论)