likes
comments
collection
share

图表常用设置

作者站长头像
站长
· 阅读数 5

本篇文章主要介绍图表的常用设置,主要包括颜色设置、线条样式、标记样式、设置画布、坐标轴、添加文本标签、设置标题和图例、添加注释文本、调整图表与画布边缘间距,以及其他相关设置等。

基本绘图函数plot()

Matplotlib基本绘图主要使用plot()函数,语法如下:

matplotlib.pyplot.plot(x,y,format_string,**kwargs)

参数说明:

x:x轴数据

y:y轴数据

format_string:曲线格式的字符串,包括颜色、线条样式和标记样式

**kwargs:可变长度参数,键值类型的数据

import pandas as pd
import matplotlib.pyplot as plt

import matplotlib as mpl
mpl.use('TkAgg')

df=pd.read_excel(r'mrbooks.xls',nrows=7)
x=df['买家会员名']
y=df['金额']
plt.plot(x,y)
plt.show()

输出结果:

图表常用设置

颜色设置

color参数的设置可以对颜色进行设置。

图表常用设置

其他颜色可以通过十六进制字符串指定,或者指定颜色名称。

  • 使用[0,1]之间浮点数值表示RGB/RGBA颜色值;作为灰度值,例如0.5。
  • 使用十六进制RGB/RGBA字符串表示颜色;例如#0F0F0F
  • 使用颜色首字母;{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}中的颜色首字母可以作为颜色参数
  • 使用X11/CSS4的颜色名;
  • 使用xkcd颜色;例如xkcd:sky blue
  • Tableau的T10种颜色;{'tab:blue', 'tab:orange', 'tab:green'}等
  • CN表示的循环颜色;对应的颜色设置代码如下:
import matplotlib.pyplot as plt
from cycler import cycler

import matplotlib as mpl
mpl.use('TkAgg')
colors = ['#1f77b4','#ff7f0e','#2ca02c','#d62728','#9467bd']
plt.rcParams['axes.prop_cycle'] = cycler(color=colors)
# 生成一些示例数据
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]
# 绘制折线图
plt.plot(x, y)

# 显示图形
plt.show()

线条样式

linestyle可选参数可以设置线条的样式,设置值如下,设置后的效果如下图。

“-”:实线,默认值。

“--”:双画线。

“-.”:点画线。

“:”:虚线。

图表常用设置

示例如下:

import pandas as pd
import matplotlib.pyplot as plt

import matplotlib as mpl
mpl.use('TkAgg')

df = pd.read_excel('体温.xls')  # 导入Excel文件
# 折线图
x = df['日期']  # x轴数据
y = df['体温']  # y轴数据
plt.plot(x, y,color='b',linestyle='-',marker='o',mfc='m')
plt.show()

图表常用设置

设置画布

画布就像我们画画的画板一样,在Matplotlib中可以使用figure()方法设置画布大小、分辨率、颜色和边框等。语法如下:

plt.figure(num, figsize, dpi, facecolor, edgecolor, frameon=True

参数说明:

num:一个整数或者字符串。默认为空,创建一个新的 figure。若是一个整数,且某个现有 figure 对象的 number 属性等于该整数,则激活该 figure 并返回该 figure;否则创建一个新的 figure。若是个字符串,则创建一个新的 figure,并将 window title 设置为该字符串。

figsize:一个元组,指定画布以英寸为单位的高度和宽度。

dpi:一个整数,指定 figure 的分辨率。

facecolor:指定背景色。

edgecolor:指定边界色。

返回一个 figure 画布对象。

import pandas as pd
import matplotlib.pyplot as plt

import matplotlib as mpl
mpl.use('TkAgg')

fig=plt.figure(figsize=(6,3),facecolor='pink')  #设置画布的长6高3,背景粉色
#导入Excel文件
df=pd.read_excel('体温.xls')
#折线图
x=df['日期']          #x轴数据
y=df['体温']          #y轴数据
plt.plot(x,y,color='m',linestyle='--',marker='o',mfc='w')
plt.show()

图表常用设置

设置坐标轴

x轴、y轴标题

设置x轴和y轴标题主要使用xlable()和ylable()函数。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('TkAgg')
# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
df = pd.read_excel('体温.xls')  # 导入Excel文件
# 折线图
x = df['日期']  # x轴数据
y = df['体温']  # y轴数据
plt.plot(x, y,color='m',linestyle='-',marker='o',mfc='w')
plt.xlabel('2024年3月')
plt.ylabel('基础体温')
plt.show()

图表常用设置

坐标抽刻度

用matplotlib画二维图像时,默认情况下的横坐标(x轴)和纵坐标(y轴)显示的值有时可能达不到我们的需求,需要借助xticks()函数和yticks()函数分别对x轴和y轴的值进行设置。 xticks()函数的语法如下:

plt.xticks(x, labels=None, **kwargs)

参数说明:

  • x:刻度位置,是一个数组类型的值
  • labels:刻度标签,需要和刻度位置对应。如果没有提供标签,则默认用刻度位置作为标签。
  • kwargs:其他参数
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('TkAgg')
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
df=pd.read_excel('体温.xls')               #导入Excel文件
#折线图
x=df['日期']                  #x轴数据
y=df['体温']                  #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.xlabel('2020年2月')        #x轴标题
plt.ylabel('基础体温')         #y轴标题

#设置x轴刻度及标签
dates=['1日','2日','3日','4日','5日',
       '6日','7日','8日','9日','10日',
       '11日','12日','13日','14日']
plt.xticks(range(1,15,1),dates)
plt.show()

图表常用设置

坐标轴范围

坐标轴范围是指x轴和y轴的取值范围。设置坐标轴范围主要使用xlim()函数和ylim()函数。

网格线

图片的美观,需要注意图片的细节----网格线,主要使用grid()函数。grid()函数也有很多其他的参数,例如颜色、网格线的方向、网格线样式和网站宽度等等。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('TkAgg')
plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
df = pd.read_excel('体温.xls')  # 导入Excel文件
# 折线图
x = df['日期']  # x轴数据
y = df['体温']  # y轴数据
plt.plot(x, y, color='m', linestyle='-', marker='o', mfc='w')
plt.xlabel('2024年3月')  # x轴标题
plt.ylabel('基础体温')  # y轴标题


# 设置x轴刻度及标签
dates = ['1日', '2日', '3日', '4日', '5日',
         '6日', '7日', '8日', '9日', '10日',
         '11日', '12日', '13日', '14日']
plt.xticks(range(1, 15, 1), dates)
# 坐标轴范围
plt.xlim(1, 14)
plt.ylim(35, 45)
plt.grid(color='0.5',linestyle='--',linewidth=1)
plt.show()

图表常用设置

添加文本标签

用于在绘图过程中,在图像上指定坐标的位置添加文本。需要用到的是plt.text()方法。语法如下:

text(x, y, s, fontdict=None, **kwargs)
#前两个参数为文本在图形中位置的坐标,s为要添加的字符串,fontdict(可选)为文本要使用的字体。最后是关键字参数。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('TkAgg')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
df = pd.read_excel('体温.xls')  # 导入Excel文件
# 折线图
x = df['日期']  # x轴数据
y = df['体温']  # y轴数据
plt.plot(x, y, color='m', linestyle='-', marker='o', mfc='w')
plt.xlabel('2020年2月')  # x轴标题
plt.ylabel('基础体温')  # y轴标题

# 设置x轴刻度及标签
dates = ['1日', '2日', '3日', '4日', '5日',
         '6日', '7日', '8日', '9日', '10日',
         '11日', '12日', '13日', '14日']
plt.xticks(range(1, 15, 1), dates)   #设置x轴坐标
plt.yticks([35.4, 35.6, 35.8, 36, 36.2, 36.4, 36.6, 36.8,
            37, 37.2, 37.4, 37.6, 37.8, 38])  #设置y轴坐标
# ha 是 Matplotlib 中文本水平对齐参数的缩写,用于指定文本的水平对齐方式。
# va 是 Matplotlib 中文本垂直对齐参数的缩写,用于指定文本的垂直对齐方式。
for a, b in zip(x, y):
    plt.text(a, b,'%.2f'%b, ha='center', va='bottom', fontsize=10)  #fontsize=10,字体设置
plt.show()

图表常用设置

设置标题与图例

数据是一个图表所要展示的内容,而有了标题和图例则可以帮助我们更好地理解这个图表的含义和想要传递的信息。

图表标题

为图表设置标题主要使用title()函数。语法如下:

matplotlib.pyplot.title(label,fontdict=None,loc='center',pad=None,**kwargs)

参数说明:

label:字符串,表示图表标题文本。 fontdict:字典,用来设置标题字体的样式。如{'fontsize':20,'fontweight':20}

loc:字符串,表示标题水平位置,参数为center、left、right 分别表示居中、水平居左、水平居右,默认为水平居中。

pad:浮点数,表示标题离图表顶部的距离,默认值为None。

**kwarg:关键字参数,可以设置一些其他文本属性。

图表图例

为图表设置图例主要使用legend()函数。 通过loc参数可以设置图例的显示位置,下图是显示位置的设置。

图表常用设置

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('TkAgg')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
df = pd.read_excel('体温.xls')  # 导入Excel文件
# 折线图
x = df['日期']  # x轴数据
y = df['体温']  # y轴数据
plt.plot(x, y, color='m', linestyle='-', marker='o', mfc='w')
plt.xlabel('2020年2月')  # x轴标题
plt.ylabel('基础体温')  # y轴标题

# 设置x轴刻度及标签
dates = ['1日', '2日', '3日', '4日', '5日',
         '6日', '7日', '8日', '9日', '10日',
         '11日', '12日', '13日', '14日']
plt.xticks(range(1, 15, 1), dates)
plt.yticks([35.4, 35.6, 35.8, 36, 36.2, 36.4, 36.6, 36.8,
            37, 37.2, 37.4, 37.6, 37.8, 38])
for a, b in zip(x, y):
    plt.text(a, b + 0.05, '%.1f' % b, ha='center', va='bottom', fontsize=9) #b+0.05表示数据离折线距离


plt.title('14天基本体温曲线图',fontsize='18')
plt.legend(('基础体温',),loc='best',fontsize=10)  #legend()对图例设置,loc设置图例位置
plt.show()

图表常用设置

添加注释

annotat()函数用于在图表上给数据添加文本注释,而且支持带箭头的画线工具,方便我们在合适的位置添加描述信息。

参数说明:

xy:被注释的坐标点,二维元组。如(x,y)。

xytext:注释文本的坐标点(也就是本事例中箭头的位置),也是二维数组,默认与xy相同。

xycoords:是被注释点点坐标系属性,设置值如下表

图表常用设置

arrowprops:箭头的样式,dict字典型数据。如果该属性非空,则会在注释文本和被注释点之间画一个箭头。

arrowprops设置参数值如下表

图表常用设置

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('TkAgg')
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
df=pd.read_excel('体温.xls')               #导入Excel文件
#折线图
x=df['日期']                  #x轴数据
y=df['体温']                  #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.xlabel('2020年2月')        #x轴标题
plt.ylabel('基础体温')         #y轴标题
#图表标题
plt.title('14天基础体温曲线图',fontsize='18')
#设置x轴刻度及标签
dates=['1日','2日','3日','4日','5日',
       '6日','7日','8日','9日','10日',
       '11日','12日','13日','14日']
plt.xticks(range(1,15,1),dates)
plt.yticks([35.4,35.6,35.8,36,36.2,36.4,36.6,36.8,
            37,37.2,37.4,37.6,37.8,38])
for a,b in zip(x,y):
    plt.text(a,b+0.05,'%.1f'%b,ha = 'center',va = 'bottom',fontsize=9)
#图例
plt.legend(('基础体温',),loc='best',fontsize=10)
#绘制一个两端缩进的箭头
plt.annotate('最高体温', xy=(9,37.1), xytext=(10.5,37.1),
             xycoords='data',
             arrowprops=dict(facecolor='r', shrink=0.05))
plt.show()

调整图表与画布边缘间距

有什么我们会发现绘制回来的图表显示不全的情况,其原因在于x轴,y轴标题与画布边缘距离太近。这种情况下可以使用subplots_adjust()函数来调整,该函数主要用于调整图表与画布的间距,也可以调整子图表的间距。

plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, 
                    hspace=None)

参数说明: 其中,left, bottom, right, top依次表示四个方向上的,图表与画布边缘之间的距离。 这四个参数的每个参数的取值范围通常都在0-1之间。与其说是“间距”,倒不如说是图像边缘的“坐标”更确切。使用这四个参数时,将画布左下角视为坐标原点,画布的宽和高都视为1。如果参数取值大于1,则可能会出现图像的损失,图像会移动到画布之外,而不会报错。 且left不能大于等于right,bottom不能大于等于top,如果违反这一点则会发生报错。 wspace和 hspace则分别表示水平方向上图像间的距离和垂直方向上图像间的距离。其的取值是可以取得大于1,具体的则具体情形自行调试选出合适的。这两个参数用于画布有多个子图时。