Python学习笔记(六):数据可视化

2023-10-27

1、使用matplotlib绘制图形

1、1  绘制折线图

import matplotlib.pyplot as plt

b=[1,2,3,4,5,6,7]
a=[1,4,9,16,25,36,49]
plt.plot(b,a,linewidth=5)
plt.title('square nums',fontsize=24)
plt.xlabel('value',fontsize=14)
plt.ylabel('square of value',fontsize=14)
plt.tick_params(axis='both',labelsize=14)
plt.show()

使用matplotlib中的模块pyplot绘制。

b为输入,a为输出,函数plot()、title()、xlabel()、ylabel()、tick_params()、show()分别为绘制图形,设置标题,设置x轴标题,设置y轴标题,设置刻度标记的大小,显示图形


1、2  使用scatter()绘制散点图

import matplotlib.pyplot as plt

b=[1,2,3,4,5,6,7]
a=[1,4,9,16,25,36,49]
plt.scatter(b,a,s=100)
plt.title('square nums',fontsize=24)
plt.xlabel('value',fontsize=14)
plt.ylabel('square of value',fontsize=14)
plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()

scatter()中实参s设置点的大小


使用列表解析生成数据,绘制散点图

import matplotlib.pyplot as plt

b=list(range(1,1001))
a=[x**2 for x in b]
plt.scatter(b,a,c=a,cmap=plt.cm.Blues,edgecolor='none',s=10)
plt.title('square nums',fontsize=24)
plt.xlabel('value',fontsize=14)
plt.ylabel('square of value',fontsize=14)
plt.tick_params(axis='both',which='major',labelsize=14)
plt.axis([0,110,0,1000])
plt.savefig('square.png',bbox_inches='tight')
plt.show()

1)函数axis()设置图表的刻度范围

2)scatter()实参c=a,camp=plt.cm.Blues使用颜色映射

3)函数savefig()保存图表,第一个实参指定要以什么样的文件名保存图表,第二个实参指定将图表多余的空白区域剪裁掉


2、随机漫步


from random import choice

class RandomWalk(object):
	def __init__(self,num_points=5000):
		self.num_points=num_points
		self.x_value=[0]
		self.y_value=[0]
	
	def fill_walk(self):
		while len(self.x_value)<self.num_points:
			x_direction=choice([1,-1])
			x_distance=choice([0,1,2,3,4])
			x_step=x_direction*x_distance
			
			y_direction=choice([1,-1])
			y_distance=choice([0,1,2,3,4])
			y_step=y_direction*y_distance
			
			if x_step==0 and y_step==0:
				continue
			
			next_x=self.x_value[-1]+x_step
			next_y=self.y_value[-1]+y_step
			
			self.x_value.append(next_x)
			self.y_value.append(next_y)

1)函数choice([0,1,2,3,4])可随机选择列表中的数字


使用类

import matplotlib.pyplot as plt

from random_walk import RandomWalk
while True:
	keep_running=raw_input('continue walk?(y/n)')
	if keep_running=='n':
		break
	else:
		rw=RandomWalk(500)
		rw.fill_walk()
		
		#set the figure window size
		plt.figure(dpi=128,figsize=(10,6))
		
		point_numbers=list(range(rw.num_points))
		plt.scatter(rw.x_value,rw.y_value,c=point_numbers,cmap=plt.cm.Reds,edgecolor='none',s=2)
		
		#show start point and ending point
		plt.scatter(0,0,c='green',s=10)
		plt.scatter(rw.x_value[-1],rw.y_value[-1],c='blue',s=10)
		
		#not show the axis
		plt.axes().get_xaxis().set_visible(False)
		plt.axes().get_yaxis().set_visible(False)
		
		plt.show()

1)函数figure()重新设置绘图窗口的尺寸,通过figsize=()元组设置窗口的宽度和高度,dpi=128,设置窗口的分辨率

2)plt.axes().get_xaxis().set_visible(False)
这条语句可隐藏坐标轴。为修改坐标轴,使用了函数plt.axes()来将每条坐标轴的可见性都设置为False。



3、使用pygal来模拟摇骰子


创建类

from random import randint

class Die():
	def __init__(self,num_sides=6):
		self.num_sides=num_sides
	
	def roll(self):
		return randint(1,self.num_sides)


1)函数randint(1,6)返回一个从1到6的随机数


模拟摇骰子

from die import Die

die=Die()
results=[]

for roll_num in range(100):
	results.append(die.roll())
print(results)


统计各个点数出现的 次数

from die import Die

die=Die()
results=[]
for roll_num in range(1000):
	results.append(die.roll())
print(results)
point_nums=[]
for value in range(1,die.num_sides+1):
	point_nums.append(results.count(value))
	
print('\n')
print(point_nums)

1)方法count(value)来计算值value在列表results中出现的次数


绘制各点数出现的频率直方图

from die import Die
import pygal

die=Die()
results=[]
for roll_num in range(1000):
	results.append(die.roll())
print(results)
point_nums=[]
for value in range(1,die.num_sides+1):
	point_nums.append(results.count(value))
	
print('\n')
print(point_nums)
	
hist=pygal.Bar()
hist.title='show times'
hist.x_labels=['1','2','3','4','5','6']
hist.x_title='results'
hist.y_title='frequency of result'
hist.add('die',point_nums)
hist.render_to_file('die_visual.svg')


1)使用模块pygal中的Bar()类创建直方图对象hist

2)使用方法add()将一系列值添加到图表中(向他传递要给添加的值指定的标签,还有一个列表,其中包含将出现在图中的值)

3)使用方法render_to_file(‘die_visual.svg’)将这个图表渲染为一个SVG文件,使用浏览器打开即可。
















本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习笔记(六):数据可视化 的相关文章

随机推荐

  • ChatExcel来了

    chatgpt是一个语言模型 在语言类任务中表现非常好 但是ChatGPT在精准的数据逻辑上表现一般 问chatgpt一些简单的数据处理问题 chatgpt一般还能回答 但chatgpt每次输出的内容有限 日常的数据量至少几百行 这个量级的
  • 应用npm workspace 维护多git仓库的package.json

    1 背景 在大型项目中 随着功能迭代 代码越来越重 需要抽离公用的组件作为子仓库来引用 git submodules 在项目中拥有多个包 每个包的package json较难维护 使用npm workspace可以解决这个问题 2 npm
  • Spring Security OAuth2.0(五)-----OAuth2实现自定义统一认证登录页/自定义授权页/基于mysql存储数据

    本次实例涉及三个项目 核心项目工程unify authorization server 认证授权登录 资源服务器项目unify resource server 测试项目是前面几篇写的项目 这里没有改动直接用来测试实例项目 一 unify a
  • 区块链中的签名怎么签?

    想知道更多区块链技术知识 请百度 链客区块链技术问答社区 链客 有问必答 明星的签名在粉丝的眼中视若无价 生意场上的签名被视为不可抵赖 而在区块链中 数字签名 也是一个独一无二的数值 如今网络环境愈发宽泛 大量的信息通过网络传播留下痕迹 人
  • ACCESS中用SUM()函数的精度问题

    链接来自 https zhidao baidu com question 74046761 html 我在access中使用sum函数时也遇到了该问题 明明数据表中存储的数据是两位小数 通过select value from t table
  • 佐美人--arm32/64/openwrt文件系统移植

    为了让不在OpenWrt项目支持列表中的ARM机器快速使用OpenWrt 可以用替换rootfs的简易方法进行移植 首先 确保你的ARM盒子有能正常使用的Linux系统 并且最好有良好的社区支持 可以去armbian寻找有开源支持的开发板
  • TS泛型用法

    泛型 可以理解为更广泛的类型 也就是说我们在函数 接口 类等中 约束数据类型的时候 可以通过泛型的方式来实现类型的传参 让数据的类型也可以根据传递的类型值来控制 一 函数中的泛型 1 定义泛型函数 基础语法 function 函数名 lt
  • python---之plt.subplot画图详解

    转载 https www cnblogs com nju2014 p 5620776 html Matplotlib 详解图像各个部分 首先一幅Matplotlib的图像组成部分介绍 在matplotlib中 整个图像为一个Figure对象
  • 关于word中插入知网e-study插件问题

    写论文过程中难免会出现word中e study莫名其妙的被禁止 估计是被杀毒软件或启动项什么的优化禁止了 打开word gt word选项 gt 加载项 gt 管理 gt 禁用项目 gt 把e study相关插件删除 在COM 加载项中将
  • Python温习(四)——编程常识与正则

    基础功能 Python中 前面已经创建了变量类型并赋值存在的对象 下次再进行使用的时候 不需要重新再次进行输入 只需要进行输入前两个字母 以Tab键进行历史对象查找后 进行切换回车 1 input和print输入 输出 da input 请
  • 2019-2020-1 1823《程序设计与数据结构》第二、三周作业总结

    作业地址 第二 三周作业总结 https edu cnblogs com campus besti 2019 2020 1 1823 PDDS homework 7585 提交情况如图 忘记提交作业 已在博客分中扣除相应的分数 作业问题 优
  • 2023华为OD机试真题-分界线(JAVA、Python、C++)

    题目描述 电视剧 分界线 里面有一个片段 男主为了向警察透露案件细节 且不暴露自己 于是将报刊上的字剪切下来 剪拼成匿名信 现在有一名举报人 希望借鉴这种手段 使用英文报刊完成举报操作 但为了增加文章的混淆度 只需满足每个单词中字母数量一致
  • sqlmap详细使用教程

    文章目录 简介 SQL注入 流程 命令参数 拓展 SQLmap用户手册 简介 Sqlmap是一个自动化检测和利用SQL注入漏洞的免费开源工具 对SQL注入漏洞进行检测的最佳工具 支持对多种数据库进行注入测试 能够自动识别数据库类型并注入 支
  • 买卖股票类问题动态规划解法(Leetcode题解-Python语言)

    在 Leetcode 中 关于买卖股票的问题共有6道 而这些题目是可以用相同的思维进行求解的 强烈推荐这篇总结 写得非常到位 股票类问题的动态规划分三步走 1 首先明确方程的含义 T i k 0 表示在第 i 天结束时 最多进行 k 次交易
  • 架构演变

    一 传统架构方式 最初做项目时 架构一般都会分为3层 即表现层展示系统界面 业务层处理各种业务逻辑 持久层操作来源于数据库中的数据 数据库中则存储我们需要存储的数据 这种三层架构的方式适用于大多数项目 但这种方法还不能称之为架构 我们做的时
  • PyTorch中张量的shape和stride的关系

    个人总结 以下是juppyter notebook下的实验
  • Web安全常见漏洞原理、危害及其修复建议

    web安全常见漏洞原理 危害及其修复建议 一 SQL注入漏洞 原理 危害 修复建议 二 XSS漏洞 原理 危害 修复建议 三 CSRF漏洞 原理 危害 修复建议 四 SSRF漏洞 原理 危害 预防建议 五 文件上传漏洞 原理 危害 修复建议
  • 弗洛伊德算法(floyd)

    算法背景 图中的A B C D E F G 代表7个村庄 边上的权值带表两村庄之间的距离 现在要从某一个村庄 例如G村庄 往另外几个村庄送邮件 问任意一村庄到其他各村庄的最短距离分别是多少 思路 该问题实际是求从任一顶点到其余顶点的最短距离
  • 揭秘京东城市时空数据引擎—JUST如何助力交通流量预测

    2014年跨年夜上海外滩人流隐患事件 使得公共安全问题受到了全体社会的广泛关注 解决这一问题的很重要一项工作就是 如何实时监控和快速预测城市中每个地方的人流量 当某个地方的人流量超过给定的值或者有超过给定值的趋势时 相关部门能及时地采取相关
  • Python学习笔记(六):数据可视化

    1 使用matplotlib绘制图形 1 1 绘制折线图 import matplotlib pyplot as plt b 1 2 3 4 5 6 7 a 1 4 9 16 25 36 49 plt plot b a linewidth