使用python带的matplotlib库进行简单的绘图。使用之前先进行安装,pip install matplotlib。如果安装了Anaconda,则无需安装matplotlib。
1.简单折线图
#绘制简单图表
import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5])
plt.show()
import matplotlib.pyplot as plt
#散点图
plt.plot([1,2,3,4,5],[2,5,6,2,3],'ro') #x轴数据为[1,2,3,4,5],y轴数据为[2,5,6,2,3]
plt.show()
import pandas as pd
#绘制简单折线图
df=pd.read_excel('abc.xlsx')
df.head()
x=df['日期']
y=df['温度']
plt.plot(x,y)
plt.show()
#plt.plot(x,y,format_string,**kwargs)
#x,x轴
#y,y轴
#format_string:控制曲线格式的字符串,包括颜色,线条样式和标记样式
#**kwargs:键值参数,相当于一个字典
x=[1,2,3,4,5]
y=[10,20,30,40,50]
plt.plot(x,y,color='#ff0000')
#plt.plot(x,y,color='g',linestyle='-.')#设置线条样式 -.点线 --双划线 :虚线 -实线
#plt.plot(x,y,color='0.5')
plt.show()
2.散点图
#散点图
x=[1,2,3,4,5]
y=[2,6,5,3,9]
plt.plot(x,y,'ro')#r代表红色,o代表是圆形
plt.show()
#图布的设置
x=[1,2,5,6,3]
y=[6,2,5,3,4]
plt.figure(facecolor='yellow',figsize=(5,3))
#facecolor设置画布颜色,figsize设置画布大小,为500*300
plt.plot(x,y,marker='o',color='r',mfc='w')
#添加标记样式,marker,o是圆形,mfc变为空心圆
plt.show()
3.设置坐标轴和网格线
#设置坐标轴
x=[1,2,5,6,3]
y=[6,2,5,3,4]
#处理中文
plt.rcParams['font.sans-serif']=['SimHei']
#设置x轴标题
plt.xlabel('2021年五一')
plt.ylabel('温度')
plt.figure(figsize=(5,3))
#facecolor设置画布颜色,figsize设置画布大小,为500*300
plt.plot(x,y,marker='o',color='r',mfc='w')
#添加标记样式,marker,o是圆形,mfc变为空心圆
plt.show()#设置坐标轴刻度
x=[i for i in range(1,11)]
y=[random.randint(1,10) for _ in range(10)]
plt.plot(x,y,marker='o',mfc='w')
plt.xticks(range(1,11))#设置x轴的刻度
plt.yticks(range(1,11))
plt.xlim(1,20)#设置坐标轴的范围
plt.grid(color='0.5',linestyle='--',linewidth='1')#设置网格线
plt.grid(color='0.5',linestyle='--',linewidth='1',axis='x')#设置网格线,隐藏x轴网格线
plt.show()
4.设置文本标签
# 添加文本标签
x = [i for i in range(1, 11)]
y = [random.randint(1, 10) for _ in range(10)]
plt.plot(x, y, marker='o', mfc='w')plt.xticks(range(1, 11)) # 设置x轴的刻度
plt.yticks(range(1, 11))
# 添加文本标签
for a, b in zip(x, y):plt.text(a, b, b, ha='center', va='center',fontsize=15,color='r') # ha垂直对齐,va垂直对齐
#添加图标的标题
plt.title('测试练习折线图',fontsize='18')
#添加图例
plt.legend(('销售次数'))
plt.show()
5.添加文本注释
# 添加文本注释
x=[1,2,3,4,5]
y=[4,5,2,3,6]
plt.plot(x,y,marker='o')
for a,b in zip(x,y):plt.text(a,b,b,ha='center',va='bottom',fontsize=12,color='r')#添加文本注释
plt.annotate('最大数',xy=(5,6),xytext=(5,6),arrowprops=dict(facecolor='r',shrink=0.5))
#shrink 线条两端收缩比例
plt.show()
6.设置画布距离
# 图表与画布之间的距离
x=[1,2,3,4,5]
y=[4,5,2,3,6]
#解决乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.plot(x,y,marker='o')
for a,b in zip(x,y):plt.text(a,b,b,ha='center',va='bottom',fontsize=12,color='r')#添加文本注释
plt.annotate('最大数',xy=(5,6),xytext=(5,6),arrowprops=dict(facecolor='r',shrink=0.5))
#shrink 线条两端收缩比例#设置间距
#subplots_adjust(left,right,top,bottom)
#left,bottom值越大,边距越大,right,top值越小,边距越大。
#取值在0-1之间,左边的值小于右边的值。
plt.subplots_adjust(left=0.2,right=0.9,top=0.9,bottom=0.2)
#设置坐标轴的刻度线
plt.tick_params(bottom=False,left=True,right=True,top=True)
#设置坐标轴刻度线显示方向
plt.rcParams['xtick.direction']='in'
plt.rcParams['ytick.direction']='out'
plt.show()
7.折线图
#折线图
df=pd.read_excel('成绩表.xlsx')
x=df['姓名']
y1=df['数学']
y2=df['语文']
y3=df['英语']
#中文乱码
plt.rcParams['font.sans-serif']=['SimHei']
plt.plot(x,y1,label="数学",color='r',marker='o')
plt.plot(x,y2,label="语文",color='g',marker='p',linestyle='--')
plt.plot(x,y3,label="英语",color='b',marker='<',linestyle=':')
#设置画布大小
plt.figure(figsize=(10,6))
#设置网格线
plt.grid(axis="y")#关闭y轴网格线
#设置坐标轴标题
plt.xlabel("姓名")
plt.ylabel("分数")
#设置图标的图例
plt.legend(['数学','语文','英语'])
#设置坐标轴刻度
plt.yticks(range(50,150,10))
plt.show()