【Python数据可视化】matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果

文章传送门

Python 数据可视化
matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图
matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值
matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果
matplotlib之设置子图:绘制子图、子图共享x轴坐标
matplotlib之绘制高级图形:散点图、热力图、等值线图、极坐标图
matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

目录

  • [简述 / 前言](#简述 / 前言)
  • [1. 设置图例](#1. 设置图例)
  • [2. 设置中文标题](#2. 设置中文标题)
  • [3. 设置网格效果](#3. 设置网格效果)

简述 / 前言

这篇来分享一些可以增加的图形内容来美化图形:设置图例、设置中文标题、设置网格效果。


1. 设置图例

显示图例关键语句:matplotlib.pyplot.legend(loc=loc)

注意 :在显示图例前必须要在画图是加入 label 属性(比如下面的例子在 plot 时都会加上 label 属性),否则图例为空!

那么 loc 有哪些值可以选呢?

参数 图例位置
best 最合适的位置(常用)
upper right 右上角(常用)
upper left 左上角
lower left 左下角
lower right 右下角
right 右侧
center left 左侧中间
center right 右侧中间
lower center 下侧中间
upper center 上侧中间
center 中间

示例:

py 复制代码
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-10, 11)
plt.xlim(-11, 11)
plt.plot(x, -2 * x, color="r", label='y=-2x')
plt.plot(x, x, color="g", label='y=x')
plt.plot(x, 2 * x, color="b", label='y=2x')
plt.legend(loc='best')  # 绘制图例
plt.show()

输出:

有时候我也会先用 best 来让 python 自动选位置放图例,然后再根据给出的图形修改图例位置,不过大多数时候图例位置选择 best 都不需要修改。

:内置颜色可以用缩写字母代替(单词首字母 ),比如 red 可以写成 rgreen 可以写成 gblue 可以写成 b ,其它的类似,如果缩写之后报错,说明你要的颜色不是内置颜色,那么就要用 RGB 代码替代。

2. 设置中文标题

显示图例关键语句:matplotlib.pyplot.title()

一般用法:matplotlib.pyplot.title(title, color=color, fontname=fontname, fontsize=fontsize, fontweight=fontweight, fontstyle=fontstyle, verticalalignment=verticalalignment, horizontalalignment=horizontalalignment),其中各属性含义如下:

属性 含义
title 要显示的标题文字
color 标题颜色
fontname 字体格式
fontsize 字体大小
fontweight 字体粗细(light, normal, medium, semibold, bold, heavy, black
fontstyle 字体类型(normal, italic, oblique
verticalalignment 水平对齐方式,可以选:top, bottom, center, baseline, center_baseline
horizontalalignment 垂直对齐方式,可以选:center, right, left
  • fontsize

    参数 含义
    16 数值型,字号大小
    xx-small 极小
    x-small 较小
    small
    medium 中等
    large
    x-large 较大
    xx-large 极大

示例:

py 复制代码
import matplotlib.pyplot as plt

sizes = [10, 20, 15, 18, 50]
explode = (0.1, 0.1, 0.1, 0.1, 0.1)
labels = ['class1', 'class2', 'class3', 'class4', 'class5']
colors = ['blue', 'red', 'green', 'yellow', 'pink', 'black']
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%.1f%%', shadow=True, startangle=30, radius=0.8)
# 设置标题
plt.title("分班比例", fontname='FangSong', fontsize='xx-large', color='green', fontweight='bold', fontstyle='italic', verticalalignment='center', horizontalalignment='center')
plt.show()

输出:

:可以看到显示标题并没有斜体,下面试试英文标题有没有效果~

示例:

py 复制代码
import matplotlib.pyplot as plt

sizes = [10, 20, 15, 18, 50]
explode = (0.1, 0.1, 0.1, 0.1, 0.1)
labels = ['class1', 'class2', 'class3', 'class4', 'class5']
colors = ['blue', 'red', 'green', 'yellow', 'pink', 'black']
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%.1f%%', shadow=True, startangle=30, radius=0.8)
# 设置标题
plt.title("Class placement ratio", fontsize='xx-large', color='green', fontweight='bold', fontstyle='italic', verticalalignment='center', horizontalalignment='center')
plt.show()

:可以看到英文标题显示为斜体,看来字体类型(fontstyle)只对英文字符生效,而不对中文字符生效~

3. 设置网格效果

关键方法:matplotlib.pyplot.grid()

一般用法:matplotlib.pyplot.grid(linewidth=linewidth, linestyle=linestyle, color=color, alpha=alpha)

属性 含义
linewidth 网格线宽度
linestyle 网格线类型
color 网格线颜色
alpha 透明度,取值:[0, 1],值越小越透明

示例:

py 复制代码
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6]  # x轴刻度
y = [70, 93, 85, 89, 100, 60]  # y轴刻度
color = ['red', 'green', 'blue', 'pink', 'cyan', 'magenta']
x_label = ['一班', '二班', '三班', '四班', '五班', '六班']
# 绘制x刻度标签
plt.xticks(x, x_label)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文
# s设置标题
plt.title("班级平均分对照表", fontdict={'fontsize': 20, 'color': 'y'})
# 绘制柱状图
plt.bar(x, y, color=color)
plt.grid(linewidth='1.5', linestyle=':', color='yellow', alpha=0.8)
plt.show()

输出:

但是一般我们只看横着的线,所以还可以设置一下 axis='y',这样只画垂直于的y轴的网格线了

改进用法:matplotlib.pyplot.grid(linewidth=linewidth, linestyle=linestyle, color=color, alpha=alpha, axis=axis),添加的参数含义如下:

参数 含义
axis 垂直于axis轴,axis可选参数:x, y, both(默认值)

示例:

py 复制代码
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6]  # x轴刻度
y = [70, 93, 85, 89, 100, 60]  # y轴刻度
color = ['red', 'green', 'blue', 'pink', 'cyan', 'magenta']
x_label = ['一班', '二班', '三班', '四班', '五班', '六班']
# 绘制x刻度标签
plt.xticks(x, x_label)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文
# s设置标题
plt.title("班级平均分对照表", fontdict={'fontsize': 20, 'color': 'y'})
# 绘制柱状图
plt.bar(x, y, color=color)
plt.grid(linewidth='1.5', linestyle=':', color='gray', alpha=0.8, axis='y')
plt.show()

输出:

相关推荐
bst@微胖子19 分钟前
Python高级语法之selenium
开发语言·python·selenium
查理零世1 小时前
【蓝桥杯集训·每日一题2025】 AcWing 6118. 蛋糕游戏 python
python·算法·蓝桥杯
魔尔助理顾问2 小时前
一个简洁高效的Flask用户管理示例
后端·python·flask
java1234_小锋2 小时前
一周学会Flask3 Python Web开发-request请求对象与url传参
开发语言·python·flask·flask3
诚信爱国敬业友善6 小时前
常见排序方法的总结归类
开发语言·python·算法
wyg_0311136 小时前
用deepseek学大模型04-模型可视化与数据可视化
人工智能·机器学习·信息可视化
架构默片7 小时前
【JAVA工程师从0开始学AI】,第五步:Python类的“七十二变“——当Java的铠甲遇见Python的液态金属
java·开发语言·python
小哥山水之间8 小时前
在 Python 中操作 Excel 文件
开发语言·python·excel
wang_yb9 小时前
『Python底层原理』--CPython的变量实现机制
python·databook
databook9 小时前
『Python底层原理』--CPython的变量实现机制
后端·python