使用python绘制折线图

前言

最近在完成一篇气象预报的论文,涉及到深度学习与气象绘图。我觉得还是有必要写一下我在这个过程中的一些经验总结,借此机会与各位同道交流。

一、基础命令

在我们使用深度学习时,肯定会用到绘图命令,绘制loss与val_loss等等,以此查看模型的效果。

plt.plot(x,y,lw=,ls=,c=, alpha=, label=)

x:x坐标的数据

y:y坐标的数据

lw:指定线条宽度

ls:指定线条样式,ls='-'为实线,ls='--'为虚断线,ls='-.'为点虚线,ls=':'为虚线

c:指定线条颜色,c='r'为红色,c='k'为黑色,c='y'为黄色

alpha:指定线条透明度,值越小越透明

label:指定线条的含义

代码示例:

#导入库
import matplotlib.pyplot as plt
import numpy as np
#设定画布。dpi越大图越清晰,绘图时间越久
fig=plt.figure(figsize=(4, 4), dpi=300)
#导入数据
x=list(np.arange(1, 21))
y=np.random.randn(20)
#绘图命令
plt.plot(x, y, lw=4, ls='-', c='b', alpha=0.1)
plt.plot()
#show出图形
plt.show()
#保存图片
fig.savefig("画布")

绘图结果:

二、根据Excel数据绘图

在python中,有一个专门进行数据处理的库包叫做pandas

# 导包
import pandas as pd
# 读取excel文件
pd.read_excel('文件所在路径')

提取excel中某一列数据:filename['列名'],返回值是一个列表。

取得excel中我们想要的数据后,下一步就是绘制:

...
# 第一步绘制画布
fig=plt.figure(figsize=(7, 4), dpi=200)
# 第二步添加绘图区.
# subplot命令是在画布上添加一个绘图区,括号里的内容转述为汉字为:“创建一个一行一列的绘图区(一行一列就只有一个绘图区),ax1是第一个绘图区,facecolor用来设置画布背景颜色,默认为白色
ax1 = fig.add_subplot(111, facecolor='green')  

如果要创建一个两行两列(或者其他维度)的子图区,分别为ax1,ax2,ax3,ax4:

ax1=fig.add_subplot(221)
ax2=fig.add_subplot(222)
ax3=fig.add_subplot(223)
ax4=fig.add_subplot(224)

效果如下:

三、合并一幅图的x(或y)坐标轴以及添加图例legend()

实现上图的效果,重点在于ax2=ax1.twinx() ,ax2和ax1共用x轴,但是ax1使用左侧y轴,ax2使用右侧y轴:


fig=plt.figure(figsize=(7,4),dpi=200)        # 新建画布
ax1=fig.add_subplot(111)                     # 设置绘图区
line1,=ax1.plot(times,temps,'r:',lw=1,label='气温')    # 创建折线
bar1 =ax1.bar(times,rains,color='b',label='降水量')    # 创建条状
ax2=ax1.twinx()                            # 设置共用x轴
line2,=ax2.plot(times,pressures,'k-',lw=1.2,label='气压')

# legend用来设置图例,还可以添加参数ncol='',该参数用来设置图例的列数,用于对齐
plt.legend((line1,bar1,line2),('气温','降水量','气压'),loc='center left',frameon=False,framealpha=0.5)       
ax1.set_xlabel('时间 \ h')                # 设置x轴
ax1.set_ylabel('气温(℃)\降水量(mm)')  # 设置左侧y轴
ax2.set_ylabel('气压(hPa)')             # 设置右侧y轴
plt.title("----")                         # 设置图的名称
plt.show()

四、调节字体样式

通过字典的方式调节,在字典中存储需要修改的的参数名称和指定值大小,还可以存放更多参数:

font={'size':30,'color':'red'}
ax.set_xlabel('--',fontdict=font)
ax.set_ylabel('--',fontdict=font)

五、绘制网格线

ax.grid()  # 开启x和y轴的网格
ax.grid(ls='--')   # 开启x和y轴的虚线网格
ax.grid(True,axis='x')   # 开启x轴的网格
ax.grid(True,axis='y')   # 开启y轴的网格

六、合并两幅图的坐标轴

按照以下方式设置画布:

fig,((ax1),(ax2))=plt.subplots(2,1,figsize=(5,5),dpi=200,sharex='all')
fig.subplots_adjust(hspace=0)

七、不常用的函数

1.ax.set_ylim()、ax.set_xlim()

在共享x(y)轴时,两边y(x)轴的零刻度是不一致的,xlim和ylim用来设置坐标轴的范围。

2.set_minor_locator()、set_major_locator()

set_minor_locator用来在主刻度的基础上设置或修改副刻度的大小,set_major_locator用来修改主刻度的单位显示。使用前,必须引入库包:

import matplotlib.ticker as ticker

举例说明:

(1)此处设定副刻度为0.1个单位。

ax1.yaxis.set_minor_locator(ticker.MultipleLocator(0.1))

(2) 将右侧主刻度设置为每10个单位显示。

ax2.yaxis.set_major_locator(ticker.MultipleLocator(10))

### 回答1: 要移除matplotlib图表中的网格线,可以使用`ax.grid(False)`方法。例如: ``` import matplotlib.pyplot as plt fig, ax = plt.subplots() # 绘制图表 # 移除网格线 ax.grid(False) plt.show() ``` ### 回答2: 要使ax.grid()不显示网格线,可以使用ax.grid(False)或者ax.grid(False, which='both')来关闭网格线。其中,ax.grid(False)关闭了所有刻度线上的网格线,而ax.grid(False, which='both')还可以关闭所有轴线上的网格线。 例如,假设我们有一个图表对象ax,并且想要将其网格线关闭,可以使用以下代码: ```python import matplotlib.pyplot as plt fig, ax = plt.subplots() # 绘制图表... # 关闭所有刻度线上的网格线 ax.grid(False) plt.show() ``` 这样就可以在图表中关闭所有刻度线上的网格线。 如果还想关闭所有轴线上的网格线,可以使用以下代码: ```python import matplotlib.pyplot as plt fig, ax = plt.subplots() # 绘制图表... # 关闭所有轴线上的网格线 ax.grid(False, which='both') plt.show() ``` 这样就可以在图表中关闭所有轴线上的网格线。 总之,要使ax.grid()不显示网格线,可以通过传入参数False或者使用which参数来关闭所有刻度线上的网格线或所有轴线上的网格线。 ### 回答3: 要在绘图中去掉网格线,可以使用matplotlib库中的`ax.grid`函数,并将其参数设置为False。具体的代码如下: ```python import matplotlib.pyplot as plt # 创建一个图形对象和一个子图对象 fig, ax = plt.subplots() # 绘制图形 # 设置x轴和y轴的标签 # 去除网格线 ax.grid(False) # 显示图形 plt.show() ``` 在上述代码中,`ax.grid(False)`将网格线的显示设置为False,表示不绘制网格线。然后,调用`plt.show()`函数来显示图形。 注意:在使用`ax.grid`函数之前,要确保已经创建了图形对象和子图对象,并且已经完成了其他的绘图和设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZGlenfiddich

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值