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

发布时间:2024年01月14日

文章传送门

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

简述 / 前言

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


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中间

示例:

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极大

示例:

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

输出:
请添加图片描述
:可以看到显示标题并没有斜体,下面试试英文标题有没有效果~

示例:

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],值越小越透明

示例:

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(默认值)

示例:

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

输出:
请添加图片描述

文章来源:https://blog.csdn.net/senlin_6688/article/details/135489537
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。