python-绘图matplotlib

《Python编程:从入门到实践》读书笔记

1.使用plot()绘制简单的折线图

import matplotlib.pyplot as plt

va=[1,2,3,4,5]
sq=[1,4,9,16,25]
plt.plot(va,sq,linewidth=1)
plt.title("square",fontsize=24)
plt.xlabel("value",fontsize=14)
plt.ylabel("square of value",fontsize=14)

plt.tick_params(axis='both',labelsize=14)#设置刻度的样式,并设置标度字体大小。

plt.show()

 //其中包括加title,加坐标描述,设置线段粗细,xy坐标轴均有数据,

运行结果:

2.使用scatter()绘制散点图

import matplotlib.pyplot as plt

#plt.scatter(2,4,s=20)#s设置点的尺寸大小
xv=[1,2,3,4,5]
yv=[1,4,9,16,25]
plt.scatter(xv,yv)#将两个列表作为参数


plt.title("Square")
plt.xlabel("number")
plt.ylabel("square")
plt.tick_params(axis="both",which="major")

plt.show()

 

 运行结果:

对以上进行了改进,对横轴、纵轴的数据使用自动计算的方式:

import matplotlib.pyplot as plt

#plt.scatter(2,4,s=20)#s设置点的尺寸szie大小

#使用代码计算数据
xv=list(range(1,1001))
yv=[x**2 for x in xv]
plt.scatter(xv,yv,s=10)


plt.title("Square")
plt.xlabel("number")
plt.ylabel("square")
plt.tick_params(axis="both",which="major")

plt.show()

运行结果:(y轴挤不见了)

对散点图中各个点的操作:

plt.scatter(xv,yv,c='red',edgecolor='none',s=10)
plt.scatter(xv,yv,c=(0,0,0.9),edgecolor='none',s=10)

 

1.其中edgecolor是防止点之间的粘连,设置为none,

2. 设置点的颜色有两种方法:直接给c赋值颜色;给c传入一个rgb列表,值都在0-1之间。值越小 颜色越深。

有趣的点来了:

使用颜色映射,可以突出数据的规律,比如让较浅颜色显示较小值,较深颜色显示较大值:

import matplotlib.pyplot as plt

#使用代码计算数据
xv=list(range(1,1001))
yv=[x**2 for x in xv]
plt.scatter(xv,yv,c=yv,cmap=plt.cm.Blues,s=10)

 

其中:c直接赋值为y轴的值, cmap告诉pyplot使用哪个颜色映射:

 3.画出随机漫步图表

piandao.py:

from random import choice

class RandNum():
    def __init__(self,ct=5000):
        self.ct=ct
        self.xv=[0]#这里一定不能初始化为[],不然在下面函数的while循环里,Append就会报错,因为
        self.yv=[0]#一开始这两个列表都为空。

    def rd(self):
        """"选择方向"""
        while len(self.xv)<self.ct:
            xdir=choice([-1,1])#choice函数会从list中选择一个数
            xdis=choice([0,1,3,2,4])
            x=xdir*xdis

            ydir=choice([-1,1])
            ydis=choice([0,1,2,3,4])
            y=ydir*ydis
            if x==0 and y==0:#不允许踏步不前
                continue
            # self.xv.append(self.xv[-1] + x)
            # self.yv.append(self.yv[-1] + y)

            xnext=self.xv[-1] + x
            ynext=self.yv[-1] + y
            self.xv.append(xnext)
            self.yv.append(ynext)

给出了rd函数,产生随机数对,放入坐标数据列表中。

调用的代码:

import matplotlib.pyplot as plt
from piandao import RandNum #这里是from...import... 并且不需要加.py后缀

while True:
    rd = RandNum()
    rd.rd()
    # 画图:
    ptn=list(range(rd.ct))#给出列表,作为颜色变化。
    plt.scatter(rd.xv, rd.yv,c=ptn,cmap=plt.cm.Blues)

    plt.scatter(0,0,c='red')#重新画出起点和终点
    plt.scatter(rd.xv[-1],rd.yv[-1],c='green')

    plt.axes().get_xaxis().set_visible(False)#设置坐标轴不显示
    plt.axes().get_yaxis().set_visible(False)

    plt.show()

    whe=input("continue?")#通过while循环让用户控制是否结束
    if whe=='y':
        break

运行结果:

 

 

 

  

 

转载于:https://www.cnblogs.com/BlueBlueSea/p/9751714.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值