【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()

输出:

相关推荐
冷雨夜中漫步1 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴2 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再2 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
喵手3 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934733 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy4 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
肖永威5 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ5 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha5 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
abluckyboy6 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法