首页 > 编程知识 正文

可以用python画折线图吗(用python绘制折线图)

时间:2023-12-07 20:37:49 阅读:313191 作者:XUEL

本文目录一览:

  • 1、如何使用Python的Pandas库绘制折线图
  • 2、python怎么画折线图
  • 3、用Python画折线图怎么实现拉伸效果
  • 4、python画折线图
  • 5、python可视化神器——pyecharts库
  • 6、如何用python绘制各种图形

如何使用Python的Pandas库绘制折线图

我们经常会使用Python的Pandas绘制各种数据图形,那么如何使用它绘制折线图呢?下面我给大家分享一下。

工具/材料

Pycharm

01

首先我们需要打开Excel软件准备需要的数据,这里多准备几列数据,一列就是一条折线,如下图所示

02

然后我们打开Pycharm软件,新建Python文件,导入Pandas库,接着将Excel中的数据读取进数据集缓存,如下图所示

03

接下来我们利用plot方法绘制折线图,如下图所示,这里只添加了一列标题

04

运行文件以后我们就可以看到折线图显示出来了,但是比较的简单,下面我们逐渐的丰富它

05

然后在plot方法中将excel里面的多列标题都添加进来,如下图所示

06

这次在运行文件的时候我们就可以看到折线图上有多条线了,如下图所示

07

接下来我们在为折线图设置标题,X,Y坐标轴的内容,如下图所示

08

然后通过plot方法下面的area方法对折线图的空白区域进行叠加填充,如下图所示

09

最后我们运行完善好后的文件,就可以看到如下图所示的折线图了,到此我们的折线图绘制也就完成了

python怎么画折线图

一、环境准备

linux ubuntu 下需安装下面三个包:

Numpy, Scipy,Matplotlib

分别输入下面的代码进行安装:

[plain] view plain copy

pip install numpy

pip install scipy

sudo apt-get install python-matplotlib

测试是否安装成功

[html] view plain copy

python

 import pylab

如果没有报错则安装成功

二、开始画图

1. 画最简单的直线图

代码如下:

[python] view plain copy

import numpy as np

import matplotlib.pyplot as plt

x=[0,1]

y=[0,1]

plt.figure()

plt.plot(x,y)

plt.savefig("easyplot.jpg")

结果如下:

代码解释:

[python] view plain copy

#x轴,y轴

x=[0,1]

y=[0,1]

#创建绘图对象

plt.figure()

#在当前绘图对象进行绘图(两个参数是x,y轴的数据)

plt.plot(x,y)

#保存图象

plt.savefig("easyplot.jpg")

2. 给图加上标签与标题

上面的图没有相应的X,Y轴标签说明与标题

在上述代码基础上,可以加上这些内容

代码如下:

[python] view plain copy

import numpy as np

import matplotlib.pyplot as plt

x=[0,1]

y=[0,1]

plt.figure()

plt.plot(x,y)

plt.xlabel("time(s)")

plt.ylabel("value(m)")

plt.title("A simple plot")

结果如下:

代码解释:

[python] view plain copy

plt.xlabel("time(s)") #X轴标签

plt.ylabel("value(m)") #Y轴标签

plt.title("A simple plot") #标题

3. 画sinx曲线

代码如下:

[python] view plain copy

# -*- coding: utf-8 -*-

import numpy as np

import matplotlib.pyplot as plt

#设置x,y轴的数值(y=sinx)

x = np.linspace(0, 10, 1000)

y = np.sin(x)

#创建绘图对象,figsize参数可以指定绘图对象的宽度和高度,单位为英寸,一英寸=80px

plt.figure(figsize=(8,4))

#在当前绘图对象中画图(x轴,y轴,给所绘制的曲线的名字,画线颜色,画线宽度)

plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)

#X轴的文字

plt.xlabel("Time(s)")

#Y轴的文字

plt.ylabel("Volt")

#图表的标题

plt.title("PyPlot First Example")

#Y轴的范围

plt.ylim(-1.2,1.2)

#显示图示

plt.legend()

#显示图

plt.show()

#保存图

plt.savefig("sinx.jpg")

结果如下:

4. 画折线图

代码如下:

[python] view plain copy

# -*- coding: utf-8 -*-

import numpy as np

import matplotlib.pyplot as plt

#X轴,Y轴数据

x = [0,1,2,3,4,5,6]

y = [0.3,0.4,2,5,3,4.5,4]

plt.figure(figsize=(8,4)) #创建绘图对象

plt.plot(x,y,"b--",linewidth=1)   #在当前绘图对象绘图(X轴,Y轴,蓝色虚线,线宽度)

plt.xlabel("Time(s)") #X轴标签

plt.ylabel("Volt")  #Y轴标签

plt.title("Line plot") #图标题

plt.show()  #显示图

plt.savefig("line.jpg") #保存图

结果如下:

用Python画折线图怎么实现拉伸效果

# encoding=utf-8import matplotlib.pyplot as pltfrom pylab import *                                 #支持中文mpl.rcParams['font.sans-serif'] = ['SimHei'] names = ['5', '10', '15', '20', '25']x = range(len(names))y = [0.855, 0.84, 0.835, 0.815, 0.81]y1=[0.86,0.85,0.853,0.849,0.83]#plt.plot(x, y, 'ro-')#plt.plot(x, y1, 'bo-')#pl.xlim(-1, 11)  # 限定横轴的范围#pl.ylim(-1, 110)  # 限定纵轴的范围plt.plot(x, y, marker='o', mec='r', mfc='w',label=u'y=x^2曲线图')plt.plot(x, y1, marker='*', ms=10,label=u'y=x^3曲线图')plt.legend()  # 让图例生效plt.xticks(x, names, rotation=45)plt.margins(0)plt.subplots_adjust(bottom=0.15)plt.xlabel(u"time(s)邻居") #X轴标签plt.ylabel("RMSE") #Y轴标签plt.title("A simple plot") #标题 plt.show()

python画折线图

# encoding=utf-8

import matplotlib.pyplot as plt

from pylab import *                                 #支持中文

mpl.rcParams['font.sans-serif'] = ['SimHei']

names = ['5', '10', '15', '20', '25']

x = range(len(names))

y = [0.855, 0.84, 0.835, 0.815, 0.81]

y1=[0.86,0.85,0.853,0.849,0.83]

#plt.plot(x, y, 'ro-')

#plt.plot(x, y1, 'bo-')

#pl.xlim(-1, 11)  # 限定横轴的范围

#pl.ylim(-1, 110)  # 限定纵轴的范围

plt.plot(x, y, marker='o', mec='r', mfc='w',label=u'y=x^2曲线图')

plt.plot(x, y1, marker='*', ms=10,label=u'y=x^3曲线图')

plt.legend()  # 让图例生效

plt.xticks(x, names, rotation=45)

plt.margins(0)

plt.subplots_adjust(bottom=0.15)

plt.xlabel(u"time(s)邻居") #X轴标签

plt.ylabel("RMSE") #Y轴标签

plt.title("A simple plot") #标题

plt.show()

python可视化神器——pyecharts库

无意中从今日头条中看到的一篇文章,可以生成简单的图表。据说一些大数据开发们也是经常用类似的图表库,毕竟有现成的,改造下就行,谁会去自己造轮子呢。

pyecharts是什么?

pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒, pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图 。使用pyecharts可以生成独立的网页,也可以在flask、django中集成使用。

安装很简单:pip install pyecharts

如需使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可,同时兼容 Python2 和 Python3 的 Jupyter Notebook 环境。所有图表均可正常显示,与浏览器一致的交互体验,简直不要太强大。

参考自pyecharts官方文档:

首先开始来绘制你的第一个图表

使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可

add() 主要方法,用于添加图表的数据和设置各种配置项

render() 默认将会在根目录下生成一个 render.html 的文件,文件用浏览器打开。

使用主题

自 0.5.2+ 起,pyecharts 支持更换主体色系

使用 pyecharts-snapshot 插件

如果想直接将图片保存为 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用该插件请确保你的系统上已经安装了 Nodejs 环境。

安装 phantomjs $ npm install -g phantomjs-prebuilt

安装 pyecharts-snapshot $ pip install pyecharts-snapshot

调用 render 方法 bar.render(path='snapshot.png') 文件结尾可以为 svg/jpeg/png/pdf/gif。请注意,svg 文件需要你在初始化 bar 的时候设置 renderer='svg'。

图形绘制过程

基本上所有的图表类型都是这样绘制的:

chart_name = Type() 初始化具体类型图表。

add() 添加数据及配置项。

render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。

add() 数据一般为两个列表(长度一致)。如果你的数据是字典或者是带元组的字典。可利用 cast() 方法转换。

多次显示图表

从 v0.4.0+ 开始,pyecharts 重构了渲染的内部逻辑,改善效率。推荐使用以下方式显示多个图表。如果使是 Numpy 或者 Pandas,可以参考这个示例

当然你也可以采用更加酷炫的方式,使用 Jupyter Notebook 来展示图表,matplotlib 有的,pyecharts 也会有的

Note: 从 v0.1.9.2 版本开始,废弃 render_notebook() 方法,现已采用更加  pythonic  的做法。直接调用本身实例就可以了。

比如这样

还有这样

如果使用的是自定义类,直接调用自定义类示例即可

图表配置

图形初始化

通用配置项

xyAxis:平面直角坐标系中的 x、y 轴。(Line、Bar、Scatter、EffectScatter、Kline)

dataZoom:dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)

legend:图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。

label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。

lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel)

grid3D:3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)

axis3D:3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)

visualMap:是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)

markLinemarkPoint:图形标记组件,用于标记指定的特殊数据,有标记线和标记点两种。(Bar、Line、Kline)

tooltip:提示框组件,用于移动或点击鼠标时弹出数据内容

toolbox:右侧实用工具箱

图表详细

Bar(柱状图/条形图)

Bar3D(3D 柱状图)

Boxplot(箱形图)

EffectScatter(带有涟漪特效动画的散点图)

Funnel(漏斗图)

Gauge(仪表盘)

Geo(地理坐标系)

GeoLines(地理坐标系线图)

Graph(关系图)

HeatMap(热力图)

Kline/Candlestick(K线图)

Line(折线/面积图)

Line3D(3D 折线图)

Liquid(水球图)

Map(地图)

Parallel(平行坐标系)

Pie(饼图)

Polar(极坐标系)

Radar(雷达图)

Sankey(桑基图)

Scatter(散点图)

Scatter3D(3D 散点图)

ThemeRiver(主题河流图)

TreeMap(矩形树图)

WordCloud(词云图)

用户自定义

Grid 类:并行显示多张图

Overlap 类:结合不同类型图表叠加画在同张图上

Page 类:同一网页按顺序展示多图

Timeline 类:提供时间线轮播多张图

统一风格

注:pyecharts v0.3.2以后,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,可自行安装对应的地图文件包。

地图文件被分成了三个 Python 包,分别为:

全球国家地图:

echarts-countries-pypkg

中国省级地图:

echarts-china-provinces-pypkg

中国市级地图:

echarts-china-cities-pypkg

直接使用python的pip安装

但是这里大家一定要注意,安装完地图包以后一定要重启jupyter notebook,不然是无法显示地图的。

显示如下:

总得来说,这是一个非常强大的可视化库,既可以集成在flask、Django开发中,也可以在做数据分析的时候单独使用,实在是居家旅行的必备神器啊

如何用python绘制各种图形

1.环境

系统:windows10

python版本:python3.6.1

使用的库:matplotlib,numpy

2.numpy库产生随机数几种方法

import numpy as np

numpy.random

rand(d0, d1, ..., dn)  

In [2]: x=np.random.rand(2,5)

In [3]: x

Out[3]:

array([[ 0.84286554,  0.50007593,  0.66500549,  0.97387807,  0.03993009],

[ 0.46391661,  0.50717355,  0.21527461,  0.92692517,  0.2567891 ]])

randn(d0, d1, ..., dn)查询结果为标准正态分布

In [4]: x=np.random.randn(2,5)

In [5]: x

Out[5]:

array([[-0.77195196,  0.26651203, -0.35045793, -0.0210377 ,  0.89749635],

[-0.20229338,  1.44852833, -0.10858996, -1.65034606, -0.39793635]])

randint(low,high,size)  

生成low到high之间(半开区间 [low, high)),size个数据

In [6]: x=np.random.randint(1,8,4)

In [7]: x

Out[7]: array([4, 4, 2, 7])

random_integers(low,high,size)  

生成low到high之间(闭区间 [low, high)),size个数据

In [10]: x=np.random.random_integers(2,10,5)

In [11]: x

Out[11]: array([7, 4, 5, 4, 2])

3.散点图

x x轴

y y轴

s   圆点面积

c   颜色

marker  圆点形状

alpha   圆点透明度                #其他图也类似这种配置

N=50# height=np.random.randint(150,180,20)# weight=np.random.randint(80,150,20)

x=np.random.randn(N)

y=np.random.randn(N)

plt.scatter(x,y,s=50,c='r',marker='o',alpha=0.5)

plt.show()

4.折线图

x=np.linspace(-10000,10000,100) #将-10到10等区间分成100份

y=x**2+x**3+x**7

plt.plot(x,y)

plt.show()

折线图使用plot函数

5.条形图

N=5

y=[20,10,30,25,15]

y1=np.random.randint(10,50,5)

x=np.random.randint(10,1000,N)

index=np.arange(N)

plt.bar(left=index,height=y,color='red',width=0.3)

plt.bar(left=index+0.3,height=y1,color='black',width=0.3)

plt.show()

orientation设置横向条形图

N=5

y=[20,10,30,25,15]

y1=np.random.randint(10,50,5)

x=np.random.randint(10,1000,N)

index=np.arange(N)# plt.bar(left=index,height=y,color='red',width=0.3)# plt.bar(left=index+0.3,height=y1,color='black',width=0.3)#plt.barh() 加了h就是横向的条形图,不用设置orientation

plt.bar(left=0,bottom=index,width=y,color='red',height=0.5,orientation='horizontal')

plt.show()

6.直方图

m1=100

sigma=20

x=m1+sigma*np.random.randn(2000)

plt.hist(x,bins=50,color="green",normed=True)

plt.show()

# #双变量的直方图# #颜色越深频率越高# #研究双变量的联合分布

#双变量的直方图#颜色越深频率越高#研究双变量的联合分布

x=np.random.rand(1000)+2

y=np.random.rand(1000)+3

plt.hist2d(x,y,bins=40)

plt.show()

7.饼状图

#设置x,y轴比例为1:1,从而达到一个正的圆

#labels标签参数,x是对应的数据列表,autopct显示每一个区域占的比例,explode突出显示某一块,shadow阴影

labes=['A','B','C','D']

fracs=[15,30,45,10]

explode=[0,0.1,0.05,0]#设置x,y轴比例为1:1,从而达到一个正的圆

plt.axes(aspect=1)#labels标签参数,x是对应的数据列表,autopct显示每一个区域占的比例,explode突出显示某一块,shadow阴影

plt.pie(x=fracs,labels=labes,autopct="%.0f%%",explode=explode,shadow=True)

plt.show()

8.箱型图

import matplotlib.pyplot as pltimport numpy as npdata=np.random.normal(loc=0,scale=1,size=1000)#sym 点的形状,whis虚线的长度plt.boxplot(data,sym="o",whis=1.5)plt.show()

#sym 点的形状,whis虚线的长度

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。