一张完美的图是这样来的—Matplotlib

当在一张图中包含大量数据和多个曲线时,线条的样式,颜色等风格化的变量设置就显得尤为重要,今天我来总结一下在Matplotlib中常用的参数和用法。

首先我们先通过一个例子来看看,先导入绘图所需要的数据

import pandas as pd
data = pd.read_csv("Added value of high-tech industry.csv")

再来定义一会儿要用到的变量

x = data['Years']
l1 = data['Actual']
l2 = data['GM(1,1)']
l3 = data['LSSVR']
l4 = data['ANN']
l5 = data['GLV']
l6 = data['FGLV']
l7 = data['FDGLV']

接下来,开始画图

import matplotlib.pyplot as plt   #导入matplotlib
fig, ax = plt.subplots(figsize=(8,4))
plt.title('Added value of high-tech industry')  #设置标题
plt.plot(x, l1,'bo',label='Actual Data')
plt.plot(x, l2,c='#EA4335',ls='-',label='GM(1,1)',linewidth=1)
plt.plot(x, l3,c='#960B4F',ls= '--',label='SSVR',linewidth=1)
plt.plot(x, l4,c='#34A853',ls='-.', label='ANN',linewidth=1)
plt.plot(x, l5,c='#24016F',ls=':', label='GLV',linewidth=1)
plt.plot(x, l6,c='#F78104',ls='--', label='FGLV',linewidth=1)
plt.plot(x, l7,c='#008081',ls='-', label='FDGLV',linewidth=1)

先讲一下在上面这几行代码中提到的几个元素:

  1. color (简写 ‘ c ‘)
    再多条曲线中颜色的选择很重要,这里我推荐一个不错的网站:https://www.schemecolor.com, 里面提供了大量的颜色和组合可供选择可以直接复制,节省了很大的时间。

  2. linestyle(简写 ‘ ls ’)
    线条的样式也是一个很重要的因素,目前官方提供的样式有以下几种
    实线: ‘-’
    虚线: ‘–’
    点线: ‘:’
    点: ‘.’
    虚点线: ‘-.’

3.linewidth(线宽),可以自己调整。
其实还有很多的参数可供设置,在这里我不依依赘述,有兴趣大家可前往matplotlib的官网:https://matplotlib.org,里面有更详细的讲解和介绍。

接下来我们继续看代码

from matplotlib.pyplot import MultipleLocator    #导入设置时间的库
x_major_locator = MultipleLocator(2)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
#设置x轴时间刻度显示(2年显示一次)
plt.xlabel('Years')  #x轴标签
plt.ylabel('$10^9$  (¥)') #y轴标签
plt.vlines(2019, -200, 8000, colors = "k", linestyles = "-",lw=0.8) #添加分割竖线
plt.text(2012,4400,'Data for building the model',fontsize=10,c='red') #添加文本注解
plt.text(2020,6500,'Trend prediction',fontsize=10,c='red')

其中关于垂直分割线的用法:

vlines(x, ymin, ymax)

x(竖线的横坐标),ymin(竖线纵坐标的下限),ymax(竖线纵坐标的上限)

接着我们来添加箭头

ax.annotate('', xy=(2018,4500), xytext=(2019,4500),
            arrowprops=dict(arrowstyle="->", color="r"))
ax.annotate('', xy=(2020,6600), xytext=(2019,6600),
            arrowprops=dict(arrowstyle="->", color="r"))

xy为箭头的起始坐标,xytext为箭头的终点坐标,arrowprops来设置箭头的属性,arrowstyle是箭头的形状。

最后我们来设置图例

plt.legend()
leg = plt.legend()
leg.get_frame().set_linewidth(0.0) #使图例边框为透明色

同样,如果想对图例的位置进行设置,例如:
upper right 1
upper left 2
等…
可以使用(‘loc=#’)

最后

plt.show()

完整代码如下:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator

data = pd.read_csv('Urbanization Rate.csv')

x=data['Years']
l1=data['Actual']
l2=data['GM(1,1)']
l3=data['LSSVR']
l4=data['ANN']
l5=data['GLV']
l6=data['FGLV']
l7=data['FDGLV']

fig, ax = plt.subplots(figsize=(8,4))
plt.title('Urbanization Rate')
plt.plot(x, l1,'bo',label='Actual Data')
plt.plot(x, l2,c='#EB1344',ls='-',label='GM(1,1)',linewidth=1)
plt.plot(x, l3,c='#333274',ls= '--',label='SSVR',linewidth=1)
plt.plot(x, l4,c='#4AC7A7',ls='-.', label='ANN',linewidth=1)
plt.plot(x, l5,c='#E36414',ls=':', label='GLV',linewidth=1)
plt.plot(x, l6,c='#E52F9E',ls='--', label='FGLV',linewidth=1)
plt.plot(x, l7,c='k',ls='-', label='FDGLV',linewidth=1)
plt.vlines(2019, 0.6, 0.85, colors = "k", linestyles = "-",lw=0.8)

x_major_locator = MultipleLocator(2)
ax= plt.gca()
ax.xaxis.set_major_locator(x_major_locator)


plt.xlabel('Years')
plt.text(2012,0.696,'Data for building the model',fontsize=10,c='red')
plt.text(2020,0.747,'Trend prediction',fontsize=10,c='red')

ax.annotate('', xy=(2018,0.7), xytext=(2019,0.7),
            arrowprops=dict(arrowstyle="->", color="r"))
ax.annotate('', xy=(2020,0.75), xytext=(2019,0.75),
           arrowprops=dict(arrowstyle="->", color="r"))

plt.legend()
leg = plt.legend(loc=4)
leg.get_frame().set_linewidth(0.0)

#plt.show()

结果展示在这里插入图片描述
更多详细信息请参考:https://matplotlib.org/api/pyplot_summary.html
(里面有更详细的代码用法解释)

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值