Study:day15-数据可视化之Matplotlib模块

Study:day15-数据可视化之Matplotlib模块

1.1 水平条形图

python 复制代码
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import sys

print('Python version:', sys.version)
print('Pandas version:', pd.__version__)
print('Numpy version:', np.__version__)
print('Matplotlib version:', matplotlib.__version__)
复制代码
Python version: 3.12.4 | packaged by Anaconda, Inc. | (main, Jun 18 2024, 15:03:56) [MSC v.1929 64 bit (AMD64)]
Pandas version: 2.2.2
Numpy version: 1.26.4
Matplotlib version: 3.8.4
python 复制代码
data = pd.read_csv('./data/奖牌.csv')
import matplotx
plt.style.use(matplotx.styles.pitaya_smoothie['light']) # 全局使用主题

plt.rcParams['font.sans-serif'] = 'STsong' # 全局设定中文字体
plt.rcParams['font.size'] = 14 # 全局指定字体大小
plt.figure(figsize=(12,8),dpi=100)   # 创建一个画布
plt.barh([f"{i}奥运会" for i in data['赛事']], # x轴数据
         width=data['总计'], # 柱子的宽度,
         ec='black',linewidth=1,color='#00b8e5'
        )
plt.ylabel('赛事名称') # 设定y轴名称
plt.xlabel('奖牌总数')  # 设定x轴名称
plt.title('近10次奥运会中国奖牌总数',fontsize=16) # 设定标题名称
for i in range(data.shape[0]):
    plt.text(
            data['总计'][i]-1,  # 先绘制x
            [f"{i}奥运会" for i in data['赛事']][i], #后绘制y
            data['总计'][i], # 标记的数据
            va='center',ha='right',color='white'
            )
plt.show()

1.2 金字塔水平条形图

python 复制代码
data = pd.read_excel("./data/age.xlsx")
python 复制代码
plt.figure(figsize=(16, 9), dpi=100)
plt.barh(data['age'][::-1], data['Male'][::-1], label='Male')
plt.barh(data['age'][::-1], -data['Female'][::-1], label='Female')
plt.xticks(plt.gca().get_xticks(), ['6%', '4%', '2%', '0%', '2%', '4%', '6%'])
plt.yticks(data['age'][::-1], data['age'][::-1] + '岁')
plt.legend()

for y, x1, x2 in zip(data['age'][::-1], data['Male'][::-1], -data['Female'][::-1]):
    plt.text(x1 + 0.001, y, f"{round(x1 * 100, 2)}%", ha='right', va='center')
    plt.text(x2 - 0.002, y, f"{round(-x2 * 100, 2)}%", ha='left', va='center')
plt.show()

1.3 散点图

1.3.1 基础散点图-多数据系列

点的官方文档

python 复制代码
data = pd.read_excel("./data/scatter.xlsx")
python 复制代码
import matplotx
plt.rcParams['font.sans-serif'] = 'FangSong' # 全局设定中文字体
plt.rcParams['font.size'] = 14 # 全局指定字体大小
plt.style.use(matplotx.styles.pitaya_smoothie['light']) # 全局使用主题
plt.figure(figsize=(16, 9), dpi=100)

plt.scatter(data['x1'],  # x轴数据
            data['Series1'],  # y轴数据
            label='Series1',  # 图例
            s=50,  # 点的大小
            c='cyan',  # 点的颜色
            marker='*',  # 点的形状  
            ec='black',  # 边框颜色
            linewidths=0.5,  # 边框宽度
            alpha=0.9  # 透明度
            )
plt.scatter(data['x2'],data['Series2'],label='Series2',
            s=50, # 调整点的大小
            c='#e97d97',  # 点的颜色
            ec='black', #  边缘线条颜色
            linewidths=1, # 边缘线条灯粗细
            alpha=0.9, # 点填充的透明度
            marker='s' # 点的类型           
           )
plt.scatter(data['x3'],data['Series3'],label='Series2',
            s=50, # 调整点的大小
            c='#61bae1',  # 点的颜色
            ec='black', #  边缘线条颜色
            linewidths=1, # 边缘线条灯粗细
            alpha=0.9, # 点填充的透明度
            marker='v' # 点的类型     
           )
plt.xlabel('This x Label')
plt.ylabel('Value')
plt.title('The Basic Chart of Scatter')
plt.legend()
plt.show()

1.3.2 散点图进阶-气泡图

python 复制代码
data = pd.read_csv("./data/mtcars.csv")
x = data['wt'] # 车的重量
y = data['mpg'] # 燃油效率
size = data['disp'] # 排量
color = data['hp'] # 马力
python 复制代码
plt.figure(figsize=(12, 7),dpi=100)
plt.rcParams['font.sans-serif']='FangSong' # 全局设定中文字体
plt.rcParams['font.size'] = 14 # 全局指定字体大小
sca = plt.scatter(x,  # 车的重量
            y, # 燃油效率
            s=size,  # 排量. 使用size表示排量的大小,点越大,排量越大
            c=color,  # 马力,  使用颜色的深浅,表示马力的大小,马力越大,颜色越接近红色
            ec='black', #  边缘线条颜色,
            linewidths=1, # 边缘线条灯粗细
            marker='o', # 点的类型
            alpha=.8, # 设置透明度,
            cmap='RdYlBu_r', # 创建一个颜色映射条
           )    
cbar = plt.colorbar(sca) # 显示颜色条
cbar.set_label('马力')

sizes = [20,40,140,180,220] # 设定点的列表,用于后续添加图例
# 绘制了多个散点图,主要用于标签设定,从而为后面添加图例,提供支持
sca_leg = [plt.scatter([],[],c='#61bae1',s=size,label=f"{size}") for size in sizes]
plt.legend(handles = sca_leg,title='排量') # 添加点大小的图例

plt.xlabel('车的重量')
plt.ylabel('车的燃油效率')
plt.title('The Scatter of Bubble Chart ')
plt.show()
python 复制代码
plt.figure(figsize=(12, 7),dpi=100)
sca = plt.scatter(x,  # 车的重量
            y, # 燃油效率
#             s=size,  # 排量. 使用size表示排量的大小,点越大,排量越大
            c=color,  # 马力,  使用颜色的深浅,表示马力的大小,马力越大,颜色越接近红色
            ec='black', #  边缘线条颜色,
            linewidths=1, # 边缘线条灯粗细
            marker='o', # 点的类型
            alpha=.8, # 设置透明度,
            cmap='RdYlBu_r', # 创建一个颜色映射条
           )    
cbar = plt.colorbar(sca) # 显示颜色条
cbar.set_label('马力')

plt.xlabel('车的重量')
plt.ylabel('车的燃油效率')
plt.title('The Scatter of Bubble Chart ')

for a,b,c in zip(x,y,data['name']):
    plt.text(a+.1,b,c,ha='left',va='center',fontsize=10)
plt.xlim(1,7)
plt.ylim(5,40)
plt.show()
python 复制代码
import matplotlib as mpl
print(mpl.get_cachedir())
复制代码
C:\Users\Administrator\.matplotlib

1.4 Pie饼图系列

python 复制代码
from pyecharts import faker
import pyecharts  # pip install pyecharts==2.0.5

pyecharts.__version__
复制代码
'2.0.5'
python 复制代码
labels = faker.Faker.week_en
sizes = faker.Faker.values()
sorted(sizes)
colors = ['#b1cfe2', '#4a7fb4', '#c0df9c', '#61a54e', '#eba5a3', '#d0443a', '#efc283']
python 复制代码
plt.figure(figsize=(16, 9), dpi=100)
plt.pie(sizes,  #扇形的大小
        labels=labels,  #扇形的标签
        colors=colors,  #扇形的颜色
        autopct='%.2f%%',  #百分比文本格式
        startangle=90,  #扇形起始点角度

        pctdistance=.7,  #扇形内部标签距离圆心的距离
        # hatch=['/', '-', '+', 'o', '.', '*', '\\'],  # 指定扇形的填充样式
        explode=[0.1, 0, 0.1, 0, 0, 0.1, 0],  #分离指定的扇形
        shadow=True,  #添加阴影
        frame=False, )
plt.show()

1.4.1扇形图进阶-环状饼图

python 复制代码
data = [375, 75, 250, 300]
label = ['面粉', '糖', '奶油', '坚果']


def func(pct, allvals):
    absoulte = int(np.round(pct / 1000 * np.sum(allvals)))
    return f"{pct:.1f}%\n({absoulte:d}g)"


plt.rcParams['font.sans-serif'] = ['Times New Roman']
plt.figure(figsize=(16, 9), dpi=100)

wedges, texts, autotexts = plt.pie(data, labels=label,
                                   autopct=lambda x: func(x, data),  #设置标签的指定样式
                                   wedgeprops={'width': 0.6},  #设定环状饼图.
                                   )
# plt.pie(data,radius=0.3,colors=['white'])
plt.setp(texts, fontproperties='STsong')  # 调整标签的字体,扇形外部标签文本
plt.setp(autotexts, fontproperties='Times New Roman', weight='bold')  # 扇形内部标签文本
wedges[0].set_ec('red')  # 可以设定每个扇形的样式
wedges[0].set_linestyle('dotted')
plt.show()

wedges:指的是每个扇形,所构建的集合对象

1.5 直方图

python 复制代码
data = np.random.normal(0, 1, 10000)
python 复制代码
plt.figure(figsize=(16, 9), dpi=100)
plt.hist(data, bins=50, color='skyblue', edgecolor='black')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram Example')
plt.show()
相关推荐
啊阿狸不会拉杆26 分钟前
《机器学习导论》第 1 章 - 引言
人工智能·python·算法·机器学习·ai·numpy·matplotlib
qq_124987075327 分钟前
基于html的书城阅读器系统的设计与实现(源码+论文+部署+安装)
前端·vue.js·spring boot·后端·mysql·信息可视化·html
七夜zippoe1 小时前
Plotly + Dash:构建交互式数据仪表盘的艺术与实战
python·信息可视化·架构·dash·回到函数
不懒不懒1 小时前
【机器学习:下采样 VS 过采样——逻辑回归在信用卡欺诈检测中的实践】
python·numpy·scikit-learn·matplotlib·pip·futurewarning
Leo.yuan2 小时前
制造业五大模式解析:OEM、ODM、OBM、JDM、CMT
大数据·数据库·信息可视化
CodeCraft Studio2 小时前
【电子行业案例】借助LightningChart 实现高精密电子制造数据实时可视化
信息可视化·数据分析·制造·lightningchart·电子制造·制造数据可视化·高性能图表库
Highcharts.js3 小时前
用 Highcharts如何创建一个音频图表
javascript·信息可视化·音视频·highcharts·音频图表
renhongxia114 小时前
AI算法实战:逻辑回归在风控场景中的应用
人工智能·深度学习·算法·机器学习·信息可视化·语言模型·逻辑回归
爱敲点代码的小哥20 小时前
C#视觉模板匹配与动态绘制实战(绘制和保存,加载tb块,处理vpp脚本的方式)
前端·javascript·信息可视化
朗迪锋20 小时前
筑梦天宫的数字基石:MultiViz与MakeReal3D共绘航天数智新图景
3d·信息可视化·数字孪生·数智孪生