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

文章传送门

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

输出:
请添加图片描述

最近更新

  1. TCP协议是安全的吗?

    2024-01-18 02:26:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-18 02:26:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-18 02:26:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-18 02:26:03       20 阅读

热门阅读

  1. CSAPP - bomblab phase_2 分析

    2024-01-18 02:26:03       21 阅读
  2. vue脚手架,路由,过滤器,自定义指令

    2024-01-18 02:26:03       31 阅读
  3. DevOps与测试、左移的方法

    2024-01-18 02:26:03       25 阅读
  4. Pandas实战100例 | 案例 46: 列重新排序

    2024-01-18 02:26:03       28 阅读
  5. 学习记录1.13

    2024-01-18 02:26:03       34 阅读
  6. jackson null值 序列化

    2024-01-18 02:26:03       37 阅读
  7. 组件v-model

    2024-01-18 02:26:03       30 阅读
  8. logback日志记录器

    2024-01-18 02:26:03       37 阅读
  9. 软件工程复习篇

    2024-01-18 02:26:03       26 阅读
  10. openssl3.2 - 官方demo学习 - signature - rsa_pss_direct.c

    2024-01-18 02:26:03       31 阅读