python画图代码简单(python语言简单的画图代码)

http://www.itjxue.com  2023-03-31 07:53  来源:未知  点击次数: 

如何用python画五一海报

要用Python画五一海报,需要用到Python的绘图库,比如matplotlib、Pillow等。以下是一个简单的例子,演示如何使用Python和Pillow库来制作五一海报:

from PIL import Image, ImageDraw, ImageFont

# 创建一个空白的画布,大小为800x600,背景色为白色

canvas = Image.new('RGB', (800, 600), (255, 255, 255))

# 在画布上添加五一节日祝福语

font = ImageFont.truetype('arial.ttf', 48) # 设置字体样式和大小

draw = ImageDraw.Draw(canvas)

draw.text((200, 100), '五一快乐!', fill=(0, 0, 0), font=font) # 设置文字位置、颜色和字体

# 在画布上添加五星红旗图案

flag = Image.open('flag.png') # 读取五星红旗图片

flag = flag.resize((200, 133)) # 设置图片大小为200x133

canvas.paste(flag, (300, 300)) # 将图片粘贴到画布上

# 保存并展示画布

canvas.save('mayday.png')

canvas.show()

在这个例子中,我们首先使用Pillow库创建了一个800x600大小的空白画布,并在画布上添加了五一节日祝福语和五星红旗图案。最后使用save()方法将画布保存为PNG格式的图片,并使用show()方法展示图片。在实际操作中,您需要根据自己的需求来修改代码,比如更换祝福语、调整字体大小和颜色、更换图片等。

如何用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作图程序

实战小程序:画出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画图,没使用之前是一脸懵的,我使用的开发环境是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轴怎么加?这又是一个问题,留给爱思考爱学习的你。

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

怎样用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报错需要查看报错信息,进行调试才能正常运行

(责任编辑:IT教学网)

更多

推荐excel文章