首页 > 编程语言 >python项目-数据可视化-matplotlib和plotly绘图

python项目-数据可视化-matplotlib和plotly绘图

时间:2023-04-11 10:12:37浏览次数:44  
标签:plt python die self matplotlib num values plotly ax

matplotlib和plotly绘图

参考书籍《Python编程 从入门到实践》

折线图

15-1 立方:数字的三次方被称为其立方。请绘制一个图形,显示前5 个整数的立方
值,再绘制一个图形,显示前5000 个整数的立方值。
15-2 彩色立方:给你前面绘制的立方图指定颜色映射。

import matplotlib.pyplot as plt

#设置字体为中文
plt.rcParams['font.sans-serif'] = 'SimHei'
#使用subplots()函数,变量fig表示整张图片,变量ax,sec_ax表示图片中的图表
#subplot()函数的参数分别为图片中图表的行数与列数,没有实参默认为 1,1
fig,(ax,sec_ax) = plt.subplots(1,2)

#对于第一个图
x_values = range(1,6)
y_values = [x**3 for x in x_values]

#使用plot()方法,其中参数linewidth为折线的宽度
ax.plot(x_values,y_values,linewidth = 2)

#修改图表与每条轴标题,参数fontsize为标题字号
ax.set_title("立方",fontsize = 15)
ax.set_xlabel("值",fontsize = 10)
ax.set_ylabel("值的立方",fontsize = 10)

#设置刻度
ax.tick_params(labelsize = 14)

#对于第二个图
x = range(1,5001)
y = [x**3 for x in x]

#使用scatter()方法绘制散点图
#设置颜色映射
sec_ax.scatter(x,y,c=y,cmap = plt.cm.Blues,s=2)

plt.show()

补充:

内置样式:matplotlib提供了很多内置样式,可在终端通过命令plt.style.available查看

若要使用这些样式,可在生成图表的代码前加入以下代码行

plt.style.use("seaborn")

若想让程序自动把图表保存在文件中,可将plt.show()替换为plt.savefig()

plt.savefig('squares_plot.png',bbox_inches = 'tight')

第一个实参指定保存的图表文件名,默认保存至程序所在目录,第二个实参‘tight’指定将图表多余的空白部分裁剪掉。

随机漫步

#random_walk.py
from random import choice

class RandomWalk:
	"""一个生成随机漫步数据的类"""
	def  __init__(self, num_points = 500):
		"""初始化随机漫步的属性"""
		self.num_points = num_points

		#所有随机漫步都始于(0,0)
		self.x_values = [0]
		self.y_values = [0]

	def fill_walk(self):
		"""计算随机漫步包含的所有点"""

		#不断漫步,直到列表达到指定长度
		while len(self.x_values) < self.num_points:

			#决定前进方向以及沿这个方向移动的距离
			x_direction = choice([-1,1])
			x_distance = choice([0,1,2,3,4])
			x_step = x_distance * x_direction

			y_direction = choice([-1,1])
			y_distance = choice([0,1,2,3,4])
			y_step = y_distance * y_direction

			#拒绝原地踏步
			if x_step == 0 and y_step == 0:
				continue

			x = self.x_values[-1] + x_step
			y = self.y_values[-1] + y_step

			self.x_values.append(x)
			self.y_values.append(y)
#rw_visual.py
import matplotlib.pyplot as plt
from random_walk import RandomWalk

while True:

	rw = RandomWalk(5000)
	rw.fill_walk()

	# figsize参数设置生成图形的大小,dpi参数设置分辨率
	fig, ax = plt.subplots(figsize=(15, 9), dpi=128)
	point_numbers = range(rw.num_points)

	ax.scatter(rw.x_values,rw.y_values,c = point_numbers,cmap = plt.cm.Blues,s = 10)

	#隐藏坐标轴
	ax.get_xaxis().set_visible(False)
	ax.get_yaxis().set_visible(False)

	plt.show()
	
	#生成一个图片后,让用户选择是否继续生成
	keep_running = input("Make another walk?y/n")
	if keep_running == 'n':
		break

条形图

#die.py
from random import randint

class Die:
    """表示一个骰子的类"""

    def __init__(self,num_size = 6):
        self.num_size = num_size

    def roll(self):
        """返回一个随机值"""
        return randint(1,self.num_size)
#dice_visual.py
from die import Die
from plotly.graph_objs import Bar,Layout
from plotly import offline

die_1 = Die()
die_2 = Die(10)

results = []
for roll_num in range(50000):
    result = die_1.roll() + die_2.roll()
    results.append(result)
max_result = die_1.num_size + die_2.num_size

#分析结果
frequencies = []
for value in range(2,max_result+1):
    frequency = results.count(value)
    frequencies.append(frequency)

x_values =list(range(2,max_result+1))
#Bar()类表示用于绘制条形图的数据集,需要一个存储x值的列表和一个存储y值的列表
data = [Bar(x = x_values,y = frequencies)]

#设置坐标轴配置字典,参数dtick指定x轴显示的刻度间距
x_axis_config = {'title':'结果','dtick':1}
y_axis_config = {"title":"结果的次数"}

#类Layout()返回一个指定图表布局和配置的对象
#这里设置图表名称并传入了x轴和y轴的配置字典
my_layout = Layout(title = "掷一个D6和一个D10 50000次的结果",xaxis = x_axis_config,yaxis = y_axis_config)

#调用函数offline.plot(),该函数需要一个包含数据和布局对象的字典,
#还接受一个文件名,指定将图表保存到哪里
offline.plot({"data":data,"layout":my_layout},filename='d6_d10.html')

标签:plt,python,die,self,matplotlib,num,values,plotly,ax
From: https://www.cnblogs.com/zhiyue-bit/p/17305266.html

相关文章

  • python3写csv中文文件,可以直接excel打开
    写出python3代码:将如下数据转为windowsexcel文件。 importcsvdata=[[1010205,'2022/11/23','R染(Inception)攻击','T89','在远程系统的启动文件登录后可以自动执行恶意脚本或可执行文件。','例:copyrogramData\Microsoft\W\Programs\StartUp',4,85,......
  • python写入数据到oracle clob字段
     环境:Python:3.6.5  #!/usr/bin/envpython#coding=utf-8importos,json,urllib,datetime,shutilimporttimeimportcx_Oraclegl_mysql_server="192.168.1.118"gl_user_name="hxl"gl_password="mysql"gl_db_name="db_t......
  • Windows 系统上如何安装 Python 环境(详细教程)
    Windows系统上如何安装Python环境(详细教程)目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。由于2.x版官方只维护到2020年,所以以3.x版作为示例,但是2.x版与3.x版安装方法及环境变量配置的方法是一模一样的,所以请放心。下载Python安装包进入Python官网www.......
  • Python Django 通用视图和错误视图的使用
    定义通用视图修改book/models.py代码中的AuthorInfo类,如果一致则不必修改classAuthorInfo(models.Model):id=models.CharField(max_length=30,verbose_name="身份证号",primary_key=True)name=models.CharField(max_length=20,verbose_name="姓名")t......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能聊天机器人从0到1快速入门——官网推荐的
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 位运算--不用加法实现两数相加--Python解法
    不用加法实现两数相加(两数均可能是负数或者0)defadd(a,b):#迭代#a^b#无进位求和#(a&b)<<1#进位x=0xffffffffa&=xb&=xwhileb!=0:a,b=a^b,(a&b)<<1&xreturnaifa<=0x7fffffffelse~(a^x)......
  • Python 学习 01 硬件
                                 计算机的硬件组成控制器:计算机的指挥系统(类似人脑)运算器:数学运算和逻辑运算(类似人脑)储存器:分为内存和外存       内存:相当于人脑的短期记忆,速度快,存储能力差,只能识......
  • Debian11安装python3.10
    一、aptinstallpython默认安装的是python3.9 二、安装python3.10需要下载源码手动编译安装sudoaptupdate&&sudoaptupgradesudoaptinstallbuild-essentialzlib1g-devlibncurses5-devlibgdbm-devlibnss3-devlibssl-devlibreadline-devlibffi-devlibsqlit......
  • python文本转语音库Pyttsx3
    python文本转语音库Pyttsx3:https://github.com/nateshmbhat/pyttsx3Installation:pipinstallpyttsx3Linuxinstallationrequirements:Ifyouareonalinuxsystemandifthevoiceoutputisnotworking,then:Installespeak,ffmpegandlibespeak1asshown......
  • python+selenium写自动化脚本遇到的坑
    1.定位不到元素网速不好定位的元素还没有刷新出来使用等待有三种强制等待,显式等待,隐式等待动态ID不要复制xpath,要手写。判断是动态ID的方法,多次关闭浏览器再打开网址,查看ID是否会发生变化下拉框,文件无法定位还没有解决......