怎样用python画图

2024-05-06 00:41

1. 怎样用python画图

思路:
1. 确定好需要画的图。
2. 创建一个画布,用来画你需要的图。
(1)画布大小,可以使用默认大小,也可以自定义画布大小。
(2)画布背景色bgcolor()。
(3)确定起点位置。
3. 画笔的设置。
(1)画笔的大小,颜色。
(2)画笔运行属性。
二、定义画布参数
import turtle as tt.screensize(width = None,heigh = None,bg = None)  #以像素为单位,参数分别为画布的宽,高,背景色t.screensize()  #返回默认大小(400,300)t.Screen()    #也是表示默认画布大小,注意S大写t.setup(w=0.5,h=0.75,startx=None,starty=None) #w,h为整数是表示像素,为小数时表示占据电脑屏幕的比例#startx,starty坐标表示矩形窗口左上角顶点的位置,默认为屏幕中心位置
三、定义画笔
1、画笔的状态
在画布上默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向),turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
2、画笔的属性
画笔(画笔的属性,颜色、画线的宽度)
(1)turtle.pensize():设置画笔的宽度;
(2)turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green","red",也可以是RGB 3元组;
>>> pencolor('brown')>>> tup = (0.2, 0.8, 0.55)>>> pencolor(tup)>>> pencolor()'#33cc8c'
(3)turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
相关推荐:《Python入门教程》
3、绘图命令
操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
(1)画笔运动命令:

(2)画笔控制命令:

(3)全局控制命令:

四、命令详解
turtle.circle(radius, extent=None, steps=None)
描述:以给定半径画圆
参数:
radius(半径);半径为正(负),表示圆心在画笔的左边(右边)画圆;
extent(弧度) (optional);
steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps);
举例:
circle(50) # 整圆;circle(50,steps=3) # 三角形;circle(120, 180) # 半圆
五、绘图举例
(1)菱形太阳花
import turtle as t #turtle库是python的内部库,直接import使用即可def draw_diamond(turt):for i in range(1,3):turt.forward(100) #向前走100步
希望我的回答对你有帮助

怎样用python画图

2. python怎么画这个图?

记住一个中点,
然后移动 m 距离画一个圆
然后回中点,旋转角度在进行再移动 m 距离 画一个圆
就这样反复进行
记得旋转的角度必须是能被360整除的数,
角度越小,画就越密集

3. 如何用python绘制各种图形

1.环境
系统:windows10
python版本:python3.6.1
使用的库:matplotlib,numpy
2.numpy库产生随机数几种方法
import numpy as npnumpy.random
rand(d0, d1, ..., dn)    
In [2]: x=np.random.rand(2,5)
In [3]: xOut[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]: xOut[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]: xOut[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]: xOut[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**7plt.plot(x,y)plt.show()
折线图使用plot函数

5.条形图
N=5y=[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=5y=[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就是横向的条形图,不用设置orientationplt.bar(left=0,bottom=index,width=y,color='red',height=0.5,orientation='horizontal')plt.show()

6.直方图
m1=100sigma=20x=m1+sigma*np.random.randn(2000)plt.hist(x,bins=50,color="green",normed=True)plt.show()

# #双变量的直方图# #颜色越深频率越高# #研究双变量的联合分布#双变量的直方图#颜色越深频率越高#研究双变量的联合分布x=np.random.rand(1000)+2y=np.random.rand(1000)+3plt.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虚线的长度

如何用python绘制各种图形

4. 求教python一个作图的问题

matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。
在Linux下比较著名的数据图工具还有gnuplot,这个是免费的,Python有一个包可以调用gnuplot,但是语法比较不习惯,而且画图质量不高。
而 Matplotlib则比较强:Matlab的语法、python语言、latex的画图质量(还可以使用内嵌的latex引擎绘制的数学公式)。 
本文目录
1. Matplotlib.pyplot快速绘图
2. 面向对象画图
3. Matplotlib.pylab快速绘图
4. 在图表中显示中文
5. 对LaTeX数学公式的支持
6. 对数坐标轴
7. 学习资源

Matplotlib.pyplot快速绘图
快速绘图和面向对象方式绘图
matplotlib实际上是一套面向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条Line2D、文字Text、刻度等在内存中都有一个对象与之对应。
为了方便快速绘图matplotlib通过pyplot模块提供了一套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部。我们只需要调用pyplot模块所提供的函数就可以实现快速绘图以及设置图表的各种细节。pyplot模块虽然用法简单,但不适合在较大的应用程序中使用。
为了将面向对象的绘图库包装成只使用函数的调用接口,pyplot模块的内部保存了当前图表以及当前子图等信息。当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示"Get Current Figure"和"Get Current Axes"。在pyplot模块中,许多函数都是对当前的Figure或Axes对象进行处理,比如说:
plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调用ax.plot()方法实现真正的绘图。
可以在Ipython中输入类似"plt.plot??"的命令查看pyplot模块的函数是如何对各种绘图对象进行包装的。
配置属性
matplotlib所绘制的图表的每个组成部分都和一个对象对应,我们可以通过调用这些对象的属性设置方法set_*()或者pyplot模块的属性设置函数setp()设置它们的属性值。
因为matplotlib实际上是一套面向对象的绘图库,因此也可以直接获取对象的属性
配置文件
绘制一幅图需要对许多对象的属性进行配置,例如颜色、字体、线型等等。我们在绘图时,并没有逐一对这些属性进行配置,许多都直接采用了matplotlib的缺省配置。
matplotlib将这些缺省配置保存在一个名为“matplotlibrc”的配置文件中,通过修改配置文件,我们可以修改图表的缺省样式。配置文件的读入可以使用rc_params(),它返回一个配置字典;在matplotlib模块载入时会调用rc_params(),并把得到的配置字典保存到rcParams变量中;matplotlib将使用rcParams字典中的配置进行绘图;用户可以直接修改此字典中的配置,所做的改变会反映到此后创建的绘图元素。
绘制多子图(快速绘图)
Matplotlib 里的常用类的包含关系为 Figure -> Axes -> (Line2D, Text, etc.)一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域,可以理解为子图。
可以使用subplot()快速绘制包含多个子图的图表,它的调用形式如下:
subplot(numRows, numCols, plotNum)
subplot将整个绘图区域等分为numRows行* numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。如果numRows,numCols和plotNum这三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的。subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。

subplot()返回它所创建的Axes对象,我们可以将它用变量保存起来,然后用sca()交替让它们成为当前Axes对象,并调用plot()在其中绘图。
绘制多图表(快速绘图)
如果需要同时绘制多幅图表,可以给figure()传递一个整数参数指定Figure对象的序号,如果序号所指定的Figure对象已经存在,将不创建新的对象,而只是让它成为当前的Figure对象。
import numpy as npimport matplotlib.pyplot as pltplt.figure(1) # 创建图表1plt.figure(2) # 创建图表2ax1 = plt.subplot(211) # 在图表2中创建子图1ax2 = plt.subplot(212) # 在图表2中创建子图2x = np.linspace(0, 3, 100)for i in xrange(5):plt.figure(1)  #❶ # 选择图表1plt.plot(x, np.exp(i*x/3))plt.sca(ax1)   #❷ # 选择图表2的子图1plt.plot(x, np.sin(i*x))plt.sca(ax2)  # 选择图表2的子图2plt.plot(x, np.cos(i*x))plt.show()

在图表中显示中文
matplotlib的缺省配置文件中所使用的字体无法正确显示中文。为了让图表能正确显示中文,可以有几种解决方案。
在程序中直接指定字体。
在程序开头修改配置字典rcParams。
修改配置文件。
matplotlib输出图象的中文显示问题
上面那个link里的修改matplotlibrc方式,我试了好几次都没成功。能work的一个比较简便粗暴的方式(但不知道有没有副作用)是,1.找到字体目录YOURPYTHONHOME\Lib\site-packages\matplotlib\mpl-data\fonts\ttf下的Vera.ttf。这里我们用中文楷体(可以从windows/system32/fonts拷贝过来,对于win8字体文件不是ttf的可以从网上下一个微软雅黑),直接张贴到前面的ttf目录下,然后更名为Vera.ttf。2. 中文字符串用unicode格式,例如:u''测试中文显示'',代码文件编码使用utf-8 加上" # coding = utf-8  "一行。

面向对象画图
matplotlib API包含有三层,Artist层处理所有的高层结构,例如处理图表、文字和曲线等的绘制和布局。通常我们只和Artist打交道,而不需要关心底层的绘制细节。
直接使用Artists创建图表的标准流程如下:
创建Figure对象
用Figure对象创建一个或者多个Axes或者Subplot对象
调用Axies等对象的方法创建各种简单类型的Artists
import matplotlib.pyplot as plt
 X1 = range(0, 50) Y1 = [num**2 for num in X1] # y = x^2 X2 = [0, 1] Y2 = [0, 1] # y = x
 Fig = plt.figure(figsize=(8,4)) # Create a `figure' instance Ax = Fig.add_subplot(111) # Create a `axes' instance in the figure Ax.plot(X1, Y1, X2, Y2) # Create a Line2D instance in the axes
 Fig.show() Fig.savefig("test.pdf")

5. Python Matplotlib画图

 主要用于作图、可视化问题
    pip install matplotlib 
   导入模块 pyplot 和 pylab ,可以参考下面链接观察两者区别:    https://www.cnblogs.com/Shoesy/p/6673947.html    (说白了就是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() 读取,举例:
    https://blog.csdn.net/qq_34859482/article/details/80617391 

Python Matplotlib画图

6. 零基础适用:教你用Python画图

18分钟详解,教你用Python画图,或许还能画出汉字哦