import matplotlib.pyplot as plt
#折线图
plt.plot([1, 2, 3, 4,5])
import matplotlib.pyplot as plt
#散点图
plt.plot([1, 2, 3, 4,5], [2, 5, 8, 12,18], 'ro')
matplotlib.pyplot.plot(x,y,format_string,**kwargs)
import matplotlib.pyplot as plt
#折线图
#range()函数创建整数列表
x = range(1,15,1)
y=range(1,42,3)
plt.plot(x,y)
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel('体温.xls') #导入Excel文件
#折线图
x =df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y)
设置值 | 说明 | 设置值 | 说明 |
---|---|---|---|
b | 蓝色 | m | 洋红色、 |
g | 绿色 | y | 黄色 |
r | 红色 | k | 黑色 |
c | 蓝绿色 | w | 白色 |
#FFF00 | 黄色,十六进制颜色值 | 0.5 | 灰度值字符串 |
from cycler import cycler
colors = ['#1f77b4','#ff7f0e','#2ca02c','#d62728','#9467bd','#8c564b','#e377c2','#7f7f7f','#bcbd22','#17becf']
plt.rcParams['axes.prop_cycle'] = cycler(color=colors)
标记 | 说明 | 标记 | 说明 | 标记 | 说明 |
---|---|---|---|---|---|
. | 点标记 | 1 | 下花三角标记 | h | 竖六边形标记 |
, | 像素标记 | 2 | 上花三角标记 | H | 横六边形标记 |
o | 实心圆标记 | 3 | 左花三角标记 | + | 加号标记 |
v | 倒三角标记 | 4 | 右花三角标记 | x | 叉号标记 |
^ | 上三角标记 | s | 实心正方形标记 | D | 大棱形标记 |
> | 右三角标记 | p | 实心五角星标记 | d | 小棱形标记 |
< | 左三角标记 | * | 星号标记 | | | 垂直线标记 |
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel('体温.xls') #导入Excel文件
#折线图
x =df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w') #mfc是marker的颜色
matplotlib.pyplot.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)
import pandas as pd
import matplotlib.pyplot as plt
fig=plt.figure(figsize=(5,3),facecolor='yellow')
#导入Excel文件
df=pd.read_excel('体温.xls')
#折线图
x=df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
figsize=(5,3),因为实际画布大小是500x300,所以这里不要输入太大的数字。
import pandas as pd
import matplotlib.pyplot as plt
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.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
plt.rcParams['axes.unicode_minus']=False #解决负号不显示问题
xticks(locs,[labels],**kwargs)
import pandas as pd
import matplotlib.pyplot as plt
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轴刻度
plt.xticks(range(1,15,1))
import pandas as pd
import matplotlib.pyplot as plt
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)
import pandas as pd
import matplotlib.pyplot as plt
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)
# 使用round函数和列表生成式,生成35.4到38.0间距为0.2的y轴刻度
list = [round(35.4+i*0.2,1) for i in range(14)] #round这里是保留1为小数
plt.yticks(list)
import pandas as pd
import matplotlib.pyplot as plt
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.xlim(1,14)
plt.ylim(35,45)
plt.grid()
plt.grid(color='0.5',linestyle='--',linewidth=1)
import pandas as pd
import matplotlib.pyplot as plt
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)
list = [round(35.4+i*0.2,1) for i in range(14)] #round这里是保留1为小数
plt.yticks(list)
# 设置网格线样式
plt.grid(color='0.5',linestyle='--',linewidth=1)
网格线对于饼形图来说,直接使用并不显示,需要与饼形图的frame参数配合使用,设置该参数值为True。详见饼形图。
matplotlib.pyplot.text(x,y,s,fontdict=None,withdash=False,**kwargs)
import pandas as pd
import matplotlib.pyplot as plt
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):
# 这里b+0.1表示在数据呈现在y值上面0.1个单位处,注释内容表示保留1位小数
plt.text(a,b+0.1,'%.1f'%b,ha = 'center',va = 'bottom',fontsize=9)
matplotlib.pyplot.title(label,fontdict=None,loc='center',pad=None,**kwargs)
plt.title('14天基础体温曲线图',fontsize='18')
plt.legend()
plt.legend('基础体温')
当手动添加图例时,有时会出现文本显示不全,解决方法是在文本后面加一个逗号(,),主要代码如下:
plt.legend(('基础体温',))
plt.legend(('基础体温',),loc='upper right',fontsize=10)
位置(字符串) | 描述 | 位置(字符串) | 描述 |
---|---|---|---|
best | 自适应 | center left | 左侧中间位置 |
upper right | 右上方 | center right | 右侧中间位置 |
lower left | 左下方 | lower center | 下方中间位置 |
lower right | 右下方 | center | 正中央 |
right | 右侧 |
plt.legend(bbox_to_anchor=(1.05,1),loc=2,borderaxespad=0)
import pandas as pd
import matplotlib.pyplot as plt
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):
# 这里b+0.1表示在数据呈现在y值上面0.1个单位处,注释内容表示保留1位小数
plt.text(a,b+0.1,'%.1f'%b,ha = 'center',va = 'bottom',fontsize=9)
# 设置图表标题
plt.title('14天基础体温曲线图',fontsize='18')
# 设置图例
plt.legend(('体温',),loc='upper right',fontsize=10)
import matplotlib.pyplot as plt
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()
#绘制一个两端缩进的箭头
plt.annotate('最高体温', xy=(9,37.1), xytext=(10.5,37.1),
xycoords='data',
arrowprops=dict(facecolor='r', shrink=0.05))
设置值 | 说明 |
---|---|
figure points | 以绘图区左下角为参考,单位是点数 |
figure pixels | 以绘图区左下角为参考,单位是像素数 |
figure fraction | 以绘图区左下角为参考,单位是百分比 |
axes points | 以子绘图区左下角为参考,单位是点数(一个figure可以有多个axes,默认为1个) |
axes pixels | 以子绘图区左下角为参考,单位是像素数 |
axes fraction | 以子绘图区左下角为参考,单位是百分比 |
data | 以被注释的坐标点xy为参考(默认值) |
polar | 不使用本地数据坐标系,使用极坐标系 |
设置值 | 说明 |
---|---|
width | 箭头的宽度(单位是点) |
headwidth | 箭头头部的宽度(点) |
shrink | 箭头两端收缩的百分比(占总长) |
? | 任何matplotlib.patches.FancyArrowPatch中的关键字 |
关于annotate()函数的内容还有很多,这里不再赘述,感兴趣的读者可以以上述举例为基础,尝试更多样式的属性和样式。
subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None)
plt.subplots_adjust(left=0.2,right=0.9,top=0.9,bottom=0.2)
plt.subplots_adjust(left=0,bottom=0,right=1,top=1,hspace=0.1,wspace=0.1)
plt.tick_params(bottom=False,left=True,right=True,top=True)
plt.rcParams['xtick.direction'] = 'in' #x轴的刻度向内显示
plt.rcParams['ytick.direction'] = 'in' #y轴的刻度线向内显示