目录

一.绘画框的设置

1.0 figure()

二.X轴和Y轴的设置 

1.0 设置x轴和y轴的步长

2.0设置x轴和y轴的表示信息

三.显示中文

方法一

方法二 

四.添加描述信息

1.0 添加表格

 2.0添加标题

3.0 #添加图例

 4.0 添加水印


代码:

import matplotlib
import matplotlib.pyplot as plt
from matplotlib import font_manager
import numpy as np
import random


#数据
x = [i+1 for i in range(12)]
y_2020 = [random.randint(20,36) for i in range(12)]
y_2021 = [random.randint(20,36) for i in range(12)]
y_2022 = [random.randint(20,36) for i in range(12)]
x_ = ["{}月".format(i+1) for i in range(12)]

#显示中文字体
font = {
    'style' : "italic" ,
    'variant':"small-caps" ,
    'weight' : "50",
    'stretch': "extra-condensed",
    'size' : "20.0",
    'fname' :"C:\Windows\Fonts\simfang.ttf" ,
}


my_font = font_manager.FontProperties("font",**font)


#设置绘图窗口大小,背景颜色,框颜色等
plt.figure(num="123",figsize=(15,8),dpi=100,facecolor="Green",edgecolor="red",linewidth=20,frameon=True) 


#设置x轴和y轴的步长
plt.xticks(x,x_,rotation=30,fontproperties=my_font) #rotation=90 旋转90度
plt.yticks(np.arange(20,37,1))

#设置x轴和y轴的表示信息
# plt.xlabel("月份",size=120,color="red")
plt.xlabel("月份",fontproperties=my_font,color="blue")
plt.ylabel("销售额",fontproperties=my_font)

#设置标题
plt.title("2020-2022年销售额",fontproperties=my_font)

#绘制网格
plt.grid(alpha=2,which='both', axis='both',color="red",linestyle="-.",linewidth=1.0) 



#绘制折线图
plt.plot(x,y_2020,label="2020年",color="#008B45",linestyle="-",linewidth=3,alpha=10) 
plt.plot(x,y_2021,label="2021年",color="Black",linestyle="--",linewidth=3) 
plt.plot(x,y_2022,label="2022年",color="#6495ED",linestyle="--",linewidth=3) 

#添加图例 得添加在plt.plot()后
plt.legend(prop=my_font,loc=1)

#添加水印
plt.text(x=8,                # 水印开头左下角对应的X点
         y=20,               # 水印开头左下角对应的Y点
         s="Matplotlib",    # 水印文本
         fontsize=50,       # 水印大小
         color="blue",      # 水印颜色
         alpha=0.5)         # 水印是通过透明度控制的


#保存图片
plt.savefig(r"C:\Users\江居正\Pictures\Saved Pictures\12.png")
plt.show()

效果如下:

python matplotlib 最高点对应的坐标画在图上_图例

具体解析:

 

一.绘画框的设置

1.0 figure()

figure(num=None,  # autoincrement if None, else integer from 1-N
           figsize=None,  # defaults to rc figure.figsize
           dpi=None,  # defaults to rc figure.dpi
           facecolor=None,  # defaults to rc figure.facecolor
           edgecolor=None,  # defaults to rc figure.edgecolor
           frameon=True,
           FigureClass=Figure,
           clear=False,
           **kwargs
           )

 

figure参数

参数

解释


num

图形的唯一标识符。

如果具有该标识符的图形已经存在,则将该图形激活并返回。整数表示Figure.number 属性,字符串表示图形标签。

如果没有带有标识符的数字或未提供num,则将创建一个新数字,将其激活并返回。如果num是一个int,它将用于Figure.number属性,否则,将使用自动生成的整数值(从1开始,对于每个新数字递增)。如果num是字符串,则将图形标签和窗口标题设置为此值。

int或str

figsize

窗口的大小,单位为英寸

二元元组 (float,float)

默认值为:(6.4, 4.8)即长6.4英寸,宽4.8英寸

dpi

所绘制的图像的分辨率,以每英寸点数为单位。

float

默认值为100.0

facecolor

背景颜色

默认:'white'

RGB颜色对照表

edgecolor

边框颜色

linewidth

边框宽度

float

frameon

是否绘制边框

bool

默认值:True

如果为False,则禁止绘制图形框。

subplotpars

未知

 

tight_layout

未知

 

constrained_layout

未知

 

 

 

 

 

 

 

 

 

 

 

 

 

 

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 50, 0.1)
y = np.sin(x)
plt.figure(num="123",figsize=(20,8),dpi=100,facecolor="Green",edgecolor="red",linewidth=20,frameon=True,) #设置图片的大小
plt.plot(x,y)
plt.savefig(r"C:\Users\jiang\Pictures\Saved Pictures\123.svg") #保存图片格式png,svg(矢量图格式,放大不失帧
plt.show()

 frameon=Ture,图如下:

 

python matplotlib 最高点对应的坐标画在图上_sed_02

frameon=False,图如下:

python matplotlib 最高点对应的坐标画在图上_图例_03

二.X轴和Y轴的设置 

1.0 设置x轴和y轴的步长

# X轴
xticks(ticks=None, labels=None, **kwargs)

# Y轴
yticks(ticks=None, labels=None, **kwargs)

 

官方示例:
locs, labels = xticks()  # Get the current locations and labels.
xticks(np.arange(0, 1, step=0.2))  # Set label locations.
xticks(np.arange(3), ['Tom', 'Dick', 'Sue'])  # Set text labels.
xticks([0, 1, 2], ['January', 'February', 'March'],rotation=20)  # Set text labels and properties.
x = [1,2,3]
y = [random.randint(20,36) for i in range(3)]
plt.figure(figsize=(20,10),dpi=200)
plt.xticks(x,["aa","y","z"],rotation=90) #设置x轴 rotation=90 旋转90度
plt.yticks(np.arange(20,37,1)) #设置y轴
plt.plot(x,y)
plt.show()

 

python matplotlib 最高点对应的坐标画在图上_Windows_04

2.0设置x轴和y轴的表示信息

#设置x轴和y轴的表示信息
plt.xlabel("月份")
plt.ylabel("销售额")

# plt.xlabel("月份",size=120,color="red")
plt.xlabel("月份",fontproperties=my_font,color="blue")
plt.ylabel("销售额",fontproperties=my_font) 

python matplotlib 最高点对应的坐标画在图上_Windows_05

三.显示中文

方法一

import matplotlib

font = {'family':'Microsoft yahei',
        'weight':'bold',
        'size':10.5}
matplotlib.rc("font",**font)

 

参数


family

字体类型

 

查看当前电脑支持的字体方法:

linux/mac 在命令提示符输入 fc-list 或 fc-list :lang=zh window在目录C:\Windows\Fonts

weight

字体粗细

float

str   normal/bold

size

字体大小

float

 

方法二 

from matplotlib import font_manager


font = {
    'style' : "italic" ,
    'variant':"small-caps" ,
    'weight' : "50",
    'stretch': "extra-condensed",
    'size' : "20",
    'fname' :"C:\Windows\Fonts\simfang.ttf" ,
}
my_font = font_manager.FontProperties("font",**font)
font = {
     'family':["serif"],
     'style' : "italic" ,
     'variant':"small-caps" ,
     'weight' : "regular",
     'stretch': "extra-condensed",
     'size' : "large",
     'fname' :"C:\Windows\Fonts\simfang.ttf" ,
 }

参数

描述


family

未知

'serif', 'sans-serif', 'cursive', 'fantasy', or 'monospace'.

style

字体风格

'normal', 'italic' or 'oblique'

variant

变形方式

'normal' or 'small-caps'

weight

字体的粗细

float 1~1000
或
'ultralight', 'light', 'normal',  'regular',
'book','medium','roman', 'semibold','demibold', 'demi',
 'bold', 'heavy','extra bold', 'black'.

stretch

拉伸方式

float 1~1000

'ultra-condensed', 'extra-condensed', 'condensed',
'semi-condensed', 'normal', 'semi-expanded', 'expanded',
'extra-expanded' or 'ultra-expanded'.

size

字体大小

flaot
或
'xx-small', 'x-small','small', 'medium', 
'large', 'x-large', 'xx-large'

fname

系统支持的字体的路径

 

 

import matplotlib
import matplotlib.pyplot as plt
from matplotlib import font_manager
import numpy as np
import random


font = {
    'style' : "italic" ,
    'variant':"small-caps" ,
    'weight' : "50",
    'stretch': "extra-condensed",
    'size' : "20.0",
    'fname' :"C:\Windows\Fonts\simfang.ttf" ,
}
my_font = font_manager.FontProperties("font",**font)

x = [1,2,3]
y = [random.randint(20,36) for i in range(3)]
plt.figure(figsize=(20,10),dpi=200)
locs, labels=plt.xticks(x,["一月","二月","三月"],rotation=90,fontproperties=my_font) #rotation=90 旋转90度
plt.yticks(np.arange(20,37,1))
plt.plot(x,y)
plt.show()

python matplotlib 最高点对应的坐标画在图上_Windows_06

 

四.添加描述信息

1.0 添加表格

grid(alpha, which, axis, color, linestyle, linewidth, **kwargs)

参数

描述


alpha

表格的透明度

float

which

 

'major', 'minor', 'both'。 默认为'major'

axis

绘制表格的方向

both:

x:绘制横向表格

y:绘制竖向表格

color

表格颜色

 

linestyle

表格风格

-

--

-.

linewidth

表格线的宽度

 

 **kwargs

 

 

font = {
    'style' : "italic" ,
    'variant':"small-caps" ,
    'weight' : "50",
    'stretch': "extra-condensed",
    'size' : "20.0",
    'fname' :"C:\Windows\Fonts\simfang.ttf" ,
}
my_font = font_manager.FontProperties("font",**font)

x = [i+1 for i in range(12)]
y = [random.randint(20,36) for i in range(12)]
plt.figure(figsize=(20,10),dpi=200)
x_ = ["{}月".format(i+1) for i in range(12)]
plt.xticks(x,x_,rotation=30,fontproperties=my_font) #rotation=90 旋转90度
plt.yticks(np.arange(20,37,1))

##绘制网格
plt.grid(alpha=2,which='both', axis='both',color="red",linestyle="-.",linewidth=1.0) 


plt.plot(x,y) 
plt.show()

 

python matplotlib 最高点对应的坐标画在图上_sed_07

 

 2.0添加标题

plt.title("2020年销售额")

plt.title("2020年销售额",fontproperties=my_font)

python matplotlib 最高点对应的坐标画在图上_sed_08

3.0 #添加图例

plt.legend(prop=my_font,loc=1)

注:①得添加在plt.plot()后 否则会报错  No handles with labels found to put in legend.②唯一一个设置显示中文用prop,其他都用fontproperties

图例的位置

loc参数

简写

base

0 默认值

upper right

1

upper left

2

lower left

3

lower right

4

right

5

center left

6

center right

7

lower center

8

upper  center

9

center

10

 

python matplotlib 最高点对应的坐标画在图上_sed_09

 4.0 添加水印

#添加水印
plt.text(x=8,                # 水印开头左下角对应的X点
         y=20,               # 水印开头左下角对应的Y点
         s="Matplotlib",    # 水印文本
         fontsize=50,       # 水印大小
         color="blue",      # 水印颜色
         alpha=0.5)         # 水印是通过透明度控制的

python matplotlib 最高点对应的坐标画在图上_sed_10