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()
相关推荐
摩羯座-185690305948 小时前
Python数据可视化基础:使用Matplotlib绘制图表
大数据·python·信息可视化·matplotlib
乐吾乐科技9 小时前
乐吾乐大屏可视化组态软件【SQL数据源】
物联网·信息可视化·编辑器·数据可视化·大屏端
大佬,救命!!!11 小时前
整理python快速构建数据可视化前端的Dash库
python·信息可视化·学习笔记·dash·记录成长
Leo.yuan19 小时前
不同数据仓库模型有什么不同?企业如何选择适合的数据仓库模型?
大数据·数据库·数据仓库·信息可视化·spark
咔咔一顿操作20 小时前
第七章 Cesium 3D 粒子烟花效果案例解析:从原理到完整代码
人工智能·3d·信息可视化·cesium
XiaoMu_0011 天前
基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现
python·信息可视化·旅游
IT研究室2 天前
大数据毕业设计选题推荐-基于大数据的国家药品采集药品数据可视化分析系统-Spark-Hadoop-Bigdata
大数据·hadoop·信息可视化·spark·毕业设计·数据可视化·bigdata
eqwaak02 天前
Matplotlib 动态显示详解:技术深度与创新思考
网络·python·网络协议·tcp/ip·语言模型·matplotlib
毕设源码-郭学长2 天前
【开题答辩全过程】以电商数据可视化系统为例,包含答辩的问题和答案
信息可视化
没有梦想的咸鱼185-1037-16632 天前
【高分论文密码】大尺度空间模拟预测与数字制图
信息可视化·数据分析·r语言