根据'.csv'文件的数据,画出精美高清曲线图

前几天与同学闲聊,聊到画图这个问题,小霞说图表是一篇文章或者论文的精髓所在,图就像衣服,当评审员拿到一篇文章的时候,首先会浏览一下这篇文章的图,然后确定是否值得继续看下去。由此,我开始研究怎样可以画出好看的图,言归正传,我开始为你讲解。
1、我使用的工具python、Tensorflow,主要用到的是matplotlib。
2、 .csv文件的内容大致如下(其实就是简单的训练数据,被我用来练手啦),如果想要这个文件,请通过评论来联系我,非常欢迎。
在这里插入图片描述
3、代码如下:

#encoding: utf-8
import csv
import pandas as pd
import numpy as np
from mpl_toolkits.axisartist.axislines import SubplotZero
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
from matplotlib.lines import Line2D
import matplotlib.pyplot as plt
with open(r".../.csv") as c:
    r = csv.reader(c)
    step,train_error,validation_error = [],[],[]
    index = 0
    for i in  r :
        if(index !=  0 ):
            step.append(i[1])
            train_error.append(i[2])
            validation_error.append(i[3])
        #print(i)
        index =index+1
    list = ['step','train_error','validation_error']
    lists = {};
    lists["step"],lists["train_error"],lists["validation_error"]= step,train_error,validation_error

x=range(0,80000,391)
#plt.ylim(0,0.4)
line2,=plt.plot(x,train_error,'r--',linewidth=0.8)
line3,=plt.plot(x,validation_error,'b-',linewidth=0.8)
ll=plt.legend([line3,line2],["validation_error","train_error"],loc='upper right')
'''
ax1 = plt.gca()
ax1.spines['top'].set_visible(False)  #去掉上边框
ax1.spines['right'].set_visible(False) #去掉右边框
'''
plt.grid(axis="y",linestyle='--')            #b, which, axis, color, linestyle, linewidth, **kwargs
plt.text(60000,0.13,'validation_error ',fontdict={'size': 9, 'color':  'blue'})       #字体尺寸9,颜色 蓝色   第一和第二个参数60000,0.13表示输出信息的坐标,原点坐标是(0,0)
plt.text(70000,-0.03,'train_error ',fontdict={'size': 9, 'color':  'red'})
plt.ylabel("error(%)",fontsize=11)     #设置纵轴单位
plt.xlabel("step",fontsize=11)         #设置横轴单位
#plt.title(" ",fontsize=11)            #设置图片的头部
plt.savefig('…/1.jpg',dpi=1200)       #图片保存位置,图片像素
plt.rcParams['figure.dpi'] =900        #分辨率
plt.show()

以下是运行后的结果,对于我来说,这已经很清晰了呢。
其实
4、如果想要包含次坐标的图,代码如下:

#encoding: utf-8
import csv
import pandas as pd
import numpy as np
from mpl_toolkits.axisartist.axislines import SubplotZero
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
from matplotlib.lines import Line2D
import matplotlib.pyplot as plt
with open(r".../.csv") as c:
    r = csv.reader(c)
    step,train_error,validation_error = [],[],[]
    index = 0
    for i in  r :
        if(index !=  0 ):
            step.append(i[1])
            train_error.append(i[2])
            validation_error.append(i[3])
        #print(i)
        index =index+1
    list = ['step','train_error','validation_error']
    lists = {};
    lists["step"],lists["train_error"],lists["validation_error"]= step,train_error,validation_error

x=range(0,80000,391)
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()

#plt.ylim(0,0.4)
line2,=ax1.plot(x,train_error,'r--',linewidth=0.8)
line3,=ax2.plot(x,validation_error,'b-',linewidth=0.8)
ll=plt.legend([line3,line2],["validation_error","train_error"],loc='upper right')

plt.grid(axis="y",linestyle='--')    #b, which, axis, color, linestyle, linewidth, **kwargs
plt.text(60000,0.13,'validation_error ',fontdict={'size': 9, 'color':  'blue'})     #字体尺寸9,颜色 红色)   第一和第二个参数60000,0.13表示输出信息的坐标,原点坐标是(0,0)
plt.text(60000,0.02,'train_error ',fontdict={'size': 9, 'color':  'red'})
ax2.set_ylabel("validation_error",fontsize=11) #设置纵轴单位
ax1.set_ylabel("train_error",fontsize=11)
ax1.set_xlabel("step",fontsize=11)         #设置横轴单位
#plt.title(" ",fontsize=11)            #设置图片的头部
plt.savefig('…/2.jpg',dpi=1200)
plt.rcParams['figure.dpi'] =900        #分辨率
plt.show()

运行结果如下:
在这里插入图片描述
  其实只是改动了代码中的一小部分,这个图还有可以改进的地方,下次我会继续讲解哒……

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值