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()
相关推荐
我就说好玩11 小时前
基于echarts、php、Mysql开发的数据可视化大屏
前端·后端·信息可视化·echarts
架构师ZYL11 小时前
python之数据结构与算法(数据结构篇)-- 元组
开发语言·javascript·python·信息可视化·数据结构与算法
Python当打之年12 小时前
【51 Pandas+Pyecharts | 深圳市共享单车数据分析可视化】
信息可视化·数据分析·pandas
淘源码d1 天前
Spring Cloud +UniApp智慧工地源码,智慧工地综合解决方案,建筑工程云平台源码
大数据·人工智能·spring cloud·信息可视化·数据分析·源码·智慧工地
图导物联1 天前
智慧停车场导航系统架构及反向寻车系统解决方案
java·linux·python·物联网·信息可视化·智慧城市
陆卿之2 天前
hadoop搭建,数据可视化,数据分析
hadoop·信息可视化·数据分析
像风一样自由20202 天前
如何使用 NumPy 和 Matplotlib 进行数据可视化
信息可视化·numpy·matplotlib
蓝策电子2 天前
目前市场主流的不同室内定位效果对比
大数据·网络·经验分享·物联网·信息可视化·智慧城市
孙同学要努力2 天前
【人工智能】——matplotlib教程
人工智能·机器学习·matplotlib
浪潮行舟2 天前
ECharts系列:图表中显示点,点与点之间不连线
信息可视化