python简单代码画图(python心形代码)

http://www.itjxue.com  2023-04-03 11:13  来源:未知  点击次数: 

如何用python绘制简单条形图?

如何用python绘制简单条形图呢?这里离不开matplotlib的使用。

条形图是数据可视化图形中很基础也很常用的一种图,简单解释下:条形图也叫长条图(英语:bar chart),亦称条图(英语:bar graph)、条状图、棒形图、柱状图、条形图表,是一种以长方形的长度为变量的统计图表。长条图用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。长条图亦可横向排列,或用多维方式表达。

那么一个普通的条形图是长什么样子的呢?

当!当!当!就是下图的这个样子:

图先亮出来啦,接下来研究这个图是怎么画的吧,先看一下原数据长什么样子:

实际画图的流程和画折线图很相近,只是用到的画图函数不一样,绘制条形图的函数plt.bar():

由于这只是最简单的一个条形图,实际上条形图的函数plt.bar()还有不少可以探索的参数设置,和对折线图函数plt.plot()的探索差不多,有兴趣的孩子可以自己去进行探索哦。

按照条形长短进行排序展示的条形图

当然也可以有其他的设置,比如说上图中的线条高低参差不齐,这是因为x轴的数据是按照学校名称进行排序的,那么可不可以按照分数的高低进行排序呢?也就是让所有的长方形按照从高到矮或者从矮到高的顺序进行排列?

当然可以啦!这里需要强调的是,条的高低排列等信息都是来源于原数据的,要想让条形的顺序发生改变,需要对画图的来源数据进行更改呢!

把原数据逆序排序后截取前十名数据赋值给data_yuwen,作为新的数据源传入画图函数plt.bar(),画出来的图自然就不一样了。

先看一眼数据长什么样子:

根据这个数据源绘制出的图形如下,由于用来画图的数据进行了降序排序操作,所以生成条形图的条也会进行降序排序展示:

很多时候,我们常见的条形图还有另一种展现形式,那就是横向的条形图,比较火的那种动态条形图绝大多数也都是横向的条形图,那么横向的条形图如何绘制呢?

理解plt.bar()主要参数

其实也不难,只要清楚plt.bar()函数中主要参数的作用就可以了!条形图函数中有五个主要参数,分别是x,height,width,bottom,orientation。其中x控制的是每个条在x轴上位置,height控制的是每个条的长度,width控制的是每个条的宽度,bottom控制的是每个条在y轴方向的起始位置,orientation控制的是条形的方向,是纵向还是横向,默认是纵向的。

通过一个小例子理解下这几个参数的作用:

上边的几行代码输出的图形如下:

对比着代码和实际输出的条形图,各个主要参数的作用是不是一目了然啦?

横向条形图

理解了这几个参数作用后,纵向的条形图转换成横向的条形图就没什么难度了!

需要设置所有条形在x轴的位置都为0,也就全部从最左侧开始画条形;由于是横向条形图,所以实际上条的宽度显示的是数据大小,将width参数设置成原数据中的语文成绩;bottom控制每个条在y轴方向的起始位置,设置bottom=range(10)设置每个条形在y轴的起始位置各不相同避免有条形重叠;height控制的是每个条在y轴方向上的长度,条形图横向设置后,在y轴上的长度失去了衡量数据的意义,所以直接设置一个常数即可;最后设置条形的方向为横向,即orientation=“horizontal”。

温馨提示:数据和标签一定要匹配,即plt.bar()重点的数据要和plt.yticks()中提取出来的标签一一对应,一旦不匹配,整个图展现的结果就是一个错误的结果!

上述代码生成的条形图如下:

感觉上边这种生成横向条形图的方式有点点绕,和人们的习惯认知有点不大一样,难道画一个横向条形图就非得转变自己的习惯认知这么反人类吗?

当然不是的,实际上有更简单的方法绘制一个横向条形图,之所以没有一开始就直接用这种简单的方法,也是为了让大家体会下条形图参数的灵活设置而已,而且如果比较绕的方法都能理解了,简单的方法理解和运用起来就更没有难度了啊!

不卖关子了,我们来认识下和plt.bar()函数类似的plt.barh()函数。

plt.barh()函数是专门绘制水平条形图的函数,主要的参数有:

y 控制y轴显示的标签来源width 控制横向条形的长度,即用来进行对比的数据源height 条形的宽度需要设置的参数主要就是这三个,比用plt.bar()函数绘制水平条形图简单了很多,具体代码如下:

效果图:

和用plt.bar()函数绘制的横向条形图一毛一样对不对?以后有需求绘制横向条形图,尽量用plt.barh()函数吧,毕竟它是专门绘制这种类型图的,简单好用。

然而实际工作中对于条形图的需求不只是这些,比如例子中只是对各个学校语文成绩的展示,有时候需要各个学科的成绩同时展现在一幅条形图中,有时候也需要绘制堆积条形图对各学科的成绩以及总成绩进行展示,这些图又该如何绘制呢?其实只要理解了各个参数的含义,绘制这些图也不在话下,至于具体怎么画,且看下回分解啊!

Python Matplotlib画图

主要用于作图、可视化问题

pip install matplotlib

导入模块 pyplot 和 pylab ,可以参考下面链接观察两者区别:

(说白了就是pylay=pyplot+numpy)

输入这三行解决

主要使用 plot() 来展示,里面前两个参数代表 x , y 坐标(注意x,y数量要一样),第三个参数可以用来设置散点图( 'o' )或者颜色、线条形式等各种样式,并且第三个参数可以同时传入多个,比如要红色的散点图就: '0r'

(1)颜色样式:

(2)线条样式:

(3)点的样式:

(4)坐标区间:

或者分别设置x、y的区间:

注:

设置点的样式时默认就是散点图,以及同类样式只能设置一个(比如不能设置两种颜色),并且还可以把多个图集合在一起展示,那就多 plot 几个,plot就相当于一个画布,每plot一个就相当于在上面画一张图,再弄就继续在上面画

主要用 hist() 来显示,实现方式很简单,把一组数据放入括号里就行了,例如随机生成一堆正态分布的数,然后直方图显示:

其中如果要设置直方图格式(宽度、上下限、是否要轮廓)可以这样:

注:

直方图和折线图这些不太一样,折线图是传入两个等长数据,然后每个x、y坐标一一对应展示出来。而直方图是:第一个参数代表你传入的所有数据,第二个参数代表你传入的x轴范围,然后直方图会将第一个参数里传入的数据一个个计算在某个范围内含有的数据量,因此传入的两个参数数据不一定要等长,例如下面的例子:

结果如图:

可以看出数据被自动分配到对应的范围内上了

使用 subplot(row, col, area) :三个参数分别是行数、列数和区域,比如要将原图分成2行2列(切成4份),然后要左下角那个图就:

如果想4个图都显示就4个 subplot ,分别1、2、3、4就行了,然后在各图的subplot之后写的都是每个图的内容,现在我们试试弄一个2行,第一行两列的图片(想象下鼠标的样子),而且分别是不同的内容:

注:

labels 、 sizes 、 colors 和 explode 的长度都要一样

1.导入3D图相关模块:

2.将画图板加到3D模块里,然后加入数据即可:

3D散点图举例:

通过 imread() 读取,举例:

怎样用python画图,为什么代码写好运行时错误?

python绘图(可视化)的模块非常多,下面我简单介绍几个不错的绘图库,感兴趣的朋友可以自己尝试一下,实验环境win7+python3.6+pycharm5.0,主要内容如下:

matplotlib

这是python中专门用于绘图的一个模块,功能强大,制图种类繁多,使用也最广泛,下面我简单介绍一下这个模块的安装和使用:

1.首先,安装matplotlib模块,这个直接在cmd窗口输入安装命令“pip install matplotlib”就行,如下:

2.安装完成后,我们就可以编写代码进行一下简单测试了,代码如下,一个稍微复杂的曲线图:

程序运行效果如下,看着还是非常不错的:

3.更多示例的话,可以参考一下官网教程,介绍的非常详细,柱状图、散点图、饼图等都有,非常适合初学者学习入门:

seaborn

这是一个基于matplotlib的绘图库,是matplotlib的高级封装,代码量更少,使用起来也更方便,下面我简单介绍一下这个模块的安装和使用:

1.首先,安装seaborn模块,这个也直接输入安装命令“pip install seaborn”就行,如下,很快就能安装完成:

2.安装完成后,我们就可以直接编写代码来测试一下这个模块了,代码如下,一个折线图集合:

程序运行截图如下,效果也非常不错:

3.更多示例的话,也直接参考官网教程就行,介绍的非常详细,很适合初学者入门学习:

pyecharts

这是echarts的一个python接口,借助于echarts强大的可视化功能,python也可以快速构建、绘制各种各样的图表,下面我简单介绍一下这个模块的安装和使用:

1.首先,安装pyecharts模块,这个也直接输入命令“pip install pyecharts”就行,如下:

2.安装完成后,我们就可以编写代码来进行下测试了,测试代码如下,一个简单的3D散点图:

程序运行截图如下(基于浏览器进行显示),效果还是非常不错的:

至此,我们就完成了利用python来进行绘图(可视化)。总的来说,这3个绘图模块使用起来都非常不错,对于大多数图表绘制来说,完全可以满足需求,当然,还有许多其他绘图模块,像ggplot等,也都非常不错,网上也有相关教程,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

python画图有很多扩展可以用,比如matplotlib、turtle、pychart等等,看你需要什么方面了,不同的需求需要用不同的工具。如果做界面还有pyqt、tkinter等等,做 游戏 还有pygame等等。

python报错需要查看报错信息,进行调试才能正常运行

Python作图程序

实战小程序:画出y=x^3的散点图

样例代码如下:

[python]?view plain?copy

#coding=utf-8

import?pylab?as?y????#引入pylab模块

x?=?y.np.linspace(-10,?10,?100)??#设置x横坐标范围和点数

y.plot(x,?x*x*x,'or')??#生成图像

ax?=?y.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',?0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',?0))

ax.set_yticks([-1000,?-500,?500,?1000])

y.xlim(x.min()?,?x.max()?)?#将横坐标设置为x的最大值和最小值

y.show()?#显示图像

[python]?view plain?copy

import?pylab?as?y

程序中引入的pylab属于matplotlib的一个模块,将其名字用y代替,其中包括了许多NumPy和pyplot模块中常用的函数,方便用户快速进行计算和绘图,十分适合在IPython交互式环境中使用。

[python]?view plain?copy

y.np.linspace(-10,?10,?100)

此为numpy中的一个函数,返回的是等间距的值,numpy.linspace(a,b,c):a指的是开始位置,b表示的是结束位置,c表示产生点的个数(默认为50)

举例:

[python]?view plain?copy

?np.linspace(2.0,?3.0,?num=5)

array([?2.??,??2.25,??2.5?,??2.75,??3.??])

[python]?view plain?copy

y.plot(x,?x*x*x,'or')??#生成图像

后面加上‘o'表示为散点图

'r'可设置颜色为红色,基本上和matlab的操作很像。

[python]?view plain?copy

y.xlim(x.min(),?x.max())

这条语句使用了xlim函数,将横坐标设置为x的大小

怎么用python中的海龟作图画一个蔡徐坤

用python中的海龟作图画一个蔡徐坤的步骤为:

1、打开python中的海龟作图。

2、先勾勒出蔡徐坤的外形线条。

3、然后编写代码填充颜色即可。

用Python画图

今天开始琢磨用Python画图,没使用之前是一脸懵的,我使用的开发环境是Pycharm,这个输出的是一行行命令,这个图画在哪里呢?

搜索之后发现,它会弹出一个对话框,然后就开始画了,比如下图

第一个常用的库是Turtle,它是Python语言中一个很流行的绘制图像的函数库,这个词的意思就是乌龟,你可以想象下一个小乌龟在一个x和y轴的平面坐标系里,从原点开始根据指令控制,爬行出来就是绘制的图形了。

??它最常用的指令就是旋转和移动,比如画个圆,就是绕着圆心移动;再比如上图这个怎么画呢,其实主要就两个命令:

turtle.forward(200)

turtle.left(170)

第一个命令是移动200个单位并画出来轨迹

第二个命令是画笔顺时针转170度,注意此时并没有移动,只是转角度

然后呢? 循环重复就画出来这个图了

好玩吧。

有需要仔细研究的可以看下这篇文章 ,这个牛人最后用这个库画个移动的钟表,太赞了。

Turtle虽好玩,但是我想要的是我给定数据,然后让它画图,这里就找到另一个常用的画图的库了。

Matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表。

使用起来也挺简单,

首先import matplotlib.pyplot as plt?导入画图的图。

然后给定x和y,用这个命令plt.plot(x, y)就能画图了,接着用plt.show()就可以把图形展示出来。

接着就是各种完善,比如加标题,设定x轴和y轴标签,范围,颜色,网格等等,在 这篇文章里介绍的很详细。

现在互联网的好处就是你需要什么内容,基本上都能搜索出来,而且还是免费的。

我为什么要研究这个呢?当然是为了用,比如我把比特币的曲线自己画出来可好?

假设现在有个数据csv文件,一列是日期,另一列是比特币的价格,那用这个命令画下:

这两列数据读到pandas中,日期为df['time']列,比特币价格为df['ini'],那我只要使用如下命令

plt.plot(df['time'], df['ini'])

plt.show()

就能得到如下图:

自己画的是不是很香,哈哈!

然后呢,我在上篇文章 中介绍过求Ahr999指数,那可不可以也放到这张图中呢?不就是加一条命令嘛

plt.plot(df['time'], df['Ahr999'])

图形如下:

但是,Ahr999指数怎么就一条线不动啊,?原来两个Y轴不一致,显示出来太怪了,需要用多Y轴,问题来了。

继续谷歌一下,把第二个Y轴放右边就行了,不过呢得使用多图,重新绘制

fig = plt.figure() # 多图

ax1 = fig.add_subplot(111)

ax1.plot(df['time'], df['ini'], label="BTC price")? #?绘制第一个图比特币价格

ax1.set_ylabel('BTC price') #?加上标签

# 第二个直接对称就行了

ax2 = ax1.twinx()#?在右边增加一个Y轴

ax2.plot(df['time'], df['Ahr999'], 'r', label="ahr999")??#?绘制第二个图Ahr999指数,红色

ax2.set_ylim([0, 50])# 设定第二个Y轴范围

ax2.set_ylabel('ahr999')

plt.grid(color="k", linestyle=":")# 网格

fig.legend(loc="center")#图例

plt.show()

跑起来看看效果,虽然丑了点,但终于跑通了。

这样就可以把所有指数都绘制到一张图中,等等,三个甚至多个Y轴怎么加?这又是一个问题,留给爱思考爱学习的你。

有了自己的数据,建立自己的各个指数,然后再放到图形界面中,同时针对异常情况再自动进行提醒,比如要抄底了,要卖出了,用程序做出自己的晴雨表。

(责任编辑:IT教学网)

更多

推荐其它软件文章