python-绘图matplotlib
2024-09-04 15:18:44
《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
运行结果:
最新文章
- [原创]MYSQL的简单入门
- SOAPUI使用教程-REST功能测试
- vs2013 手动生成webservice代理类wsdl
- BZOJ4421 : [Cerc2015] Digit Division
- [转载] 【每周推荐阅读】C-Store:列式存储数据库
- linux笔记:linux常用命令-网络命令
- java-源码下载
- 解决关于jquery中$.get()方法总是报“HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy”错的方法
- Failed to convert value of type &#39;java.lang.String&#39; to required type &#39;java.time.LocalDate&#39;;
- CM+CDH大数据平台
- redis 哨兵(sentinel)
- 【Anaconda】:科学计算的Python发行版
- 多线程编程——ANR
- python模块之HTMLParser之穆雪峰的案例(理解其用法原理)
- Python(七)之OS模块
- C#连接操作MySQL数据库详细步骤 帮助类等(二次改进版)
- CentOS 安装 Hadoop
- SEO优化:WordPress发布文章主动推送到百度,加快收录保护原创
- JZYZOJ 1542 [haoi2015]str 矩阵乘法 dp
- 用函数式编程,从0开发3D引擎和编辑器(一)