python绘图之坐标轴的超详细讲解
作者:大风起兮_ 发布时间:2021-12-13 06:57:17
标签:python,绘图,坐标轴
1. 2D坐标轴
1.1 绘制简单的曲线
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,50)#-1到1中画50个点
y=x**2
plt.plot(x,y,color='green')
plt.tick_params(axis='x',colors='blue')
plt.tick_params(axis='y',colors='red')
plt.show()
作图:
1.2 坐标轴的刻度线向内
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,50)#-1到1中画50个点
y=x**2
# 下面两行代码要放在plt.plot的前面
plt.rcParams['xtick.direction'] = 'in'#将x轴的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in'#将y轴的刻度线方向设置向内
plt.plot(x,y,color='green')
plt.tick_params(axis='x',colors='blue')
plt.tick_params(axis='y',colors='red')
plt.show()
1.3 将坐标刻度从整0开始
plt.margins(x=0)
plt.margins(y=0)
#设置坐标轴范围
#plt.ylim([0,0.8])
#plt.xlim([0,0.75])
1.4 设置刻度栅格
简单的刻度:
plt.grid()
主刻度和次刻度
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(17,3))
ax = plt.gca()
ax.xaxis.set_major_locator(plt.MultipleLocator(0.2)) #设置x轴主刻度
ax.xaxis.set_minor_locator(plt.MultipleLocator(0.04)) #设置x轴次刻度
ax.yaxis.set_major_locator(plt.MultipleLocator(0.5)) #设置x轴次刻度
ax.yaxis.set_minor_locator(plt.MultipleLocator(0.1)) #设置x轴次刻度
ax.grid(which='major',axis="both",linewidth=0.75,linestyle='-',color='r')
ax.grid(which='minor',axis="both",linewidth=0.25,linestyle='-',color='r')
x=np.linspace(0,3*np.pi,50)#-1到1中画50个点
y=2*np.sin(x)
plt.plot(x,y)
plt.margins(x=0)
plt.margins(y=0)
plt.show()
下面的图形类似于心电图纸绘制,关于心电图相关的绘制,具体在使用python绘制心电图中体现:
1.5 不显示坐标
只是坐标刻度不可见,两种方式的效果一样
# plt.xticks([])
plt.yticks([])
# 或者下面的
# frame.axes.get_xaxis().set_visible(False) # x 轴不可见
frame.axes.get_yaxis().set_visible(False) # y 轴不可见
关闭两者坐标轴,只有曲线图形
plt.axis('off')
1.6 坐标值
为坐标设置刻度值, 并且将刻度值旋转45度
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,2,50)#-1到1中画50个点
y=x**2
plt.rcParams['xtick.direction'] = 'in'#将x轴的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in'#将y轴的刻度线方向设置向内
ax = plt.gca()
xlabel=[str(val)+'_1' for val in range(100,110)]
ax.set_xticklabels(xlabel)
plt.xticks(rotation = 45)
plt.plot(x,y,color='green')
plt.tick_params(axis='x',colors='blue')
plt.tick_params(axis='y',colors='red')
plt.margins(x=0)
plt.margins(y=0)
plt.show()
1.7 绘制横线和竖线
plt.axvline(1)
plt.axhline(1.5)
1.8 设置坐标点的颜色
下图中设置y轴第3个坐标值的颜色为黄色,x轴第6个坐标值颜色为绿色。
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,2,50)#-1到1中画50个点
y=x**2
plt.rcParams['xtick.direction'] = 'in'#将x轴的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in'#将y轴的刻度线方向设置向内
ax = plt.gca()
plt.plot(x,y,color='green')
plt.tick_params(axis='x',colors='blue')
plt.tick_params(axis='y',colors='red')
ax.get_yticklabels()[3].set_color("y")
ax.get_xticklabels()[6].set_color("g")
plt.show()
1.9 双坐标
代码如下:
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.01, 10.0, 0.01)
data1 = np.exp(t)
data2 = np.sin(2 * np.pi * t)
fig, ax1 = plt.subplots()
color = 'tab:red'
ax1.set_xlabel('time (s)')
ax1.set_ylabel('exp', color=color)
ax1.plot(t, data1, color=color)
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis
color = 'tab:blue'
ax2.set_ylabel('sin', color=color) # we already handled the x-label with ax1
ax2.plot(t, data2, color=color)
ax2.tick_params(axis='y', labelcolor=color)
fig.tight_layout() # otherwise the right y-label is slightly clipped
plt.show()
2. 3D坐标轴
2.1 绘制3D散点图
关键代码ax.scatter(xs, ys, zs, c=c, marker=m)
,输入数据xs,ys,zs是相同长度的一维数据。c是颜色,marker是散点类型。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
def randrange(n, vmin, vmax):
return (vmax - vmin)*np.random.rand(n) + vmin
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
n = 100
for c, m, zlow, zhigh in [('r', '*', -10, 20), ('b', 'o', -30, -10)]:
xs = randrange(n, 23, 32)
ys = randrange(n, 0, 100)
zs = randrange(n, zlow, zhigh)
ax.scatter(xs, ys, zs, c=c, marker=m)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
2.2 绘制3D曲面图
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure(num=1,figsize=(8,6))
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
# height value
Z = np.cos(R)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'),edgecolors='white')
ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))#投影等高线,改变zdir='x', offset=-4实现投影到不同坐标轴
ax.set_zlim(-2, 2)
ax.tick_params(axis='x',colors='g')
ax.tick_params(axis='y',colors='g')
ax.tick_params(axis='z',colors='g')
plt.show()
2.3 绘制3D柱形图
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
X=np.arange(0, 9, step=1)#X轴的坐标
Y=np.arange(0, 10, step=1)#Y轴的坐标
arr = [[np.random.randint(1,50) for i in range(9)] for i in range(10)]
Z = np.array(arr)
xx, yy=np.meshgrid(X, Y)#网格化坐标
X, Y=xx.ravel(), yy.ravel()#矩阵扁平化
bottom=np.zeros_like(X)#设置柱状图的底端位值
Z=Z.ravel()#扁平化矩阵
width=height=0.8#每一个柱子的长和宽
#绘图设置
fig=plt.figure()
ax=fig.gca(projection='3d')#三维坐标轴
ax.bar3d(X, Y, bottom, width, height, Z, shade=True,color='lightgreen')#
#坐标轴设置
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
引用
[1]Matplotlib 文档
[2]python绘制三维图
[3]python-绘制3D柱形图
[4]Python + matplotlib更改纵横坐标刻度颜色
[5]Python绘图总结(Matplotlib篇)之坐标轴及刻度
来源:https://blog.csdn.net/zds13257177985/article/details/124366300
0
投稿
猜你喜欢
- 本文假设某些特定类型的文件和大小为0的文件为垃圾文件,可以自由扩展代码的列表,也就是垃圾文件的类型。from os.path import
- 我就废话不多说了,还是直接看代码吧!#!/usr/bin/env python3#coding = utf-8def is_triangle
- 1. 普通装饰器 import logging1. foo = use_loggine(foo) def use_loggine(func)
- 由于某些原因需要把函数直接放到 img 标签上的 onload 属性执行,比如:For some reasons we have to ex
- 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态(存在内存中)写入到临时或持久性存储区(硬盘)。以后
- 一、将PHP数组转换为JSON格式在PHP中,我们可以直接使用数组来存储数据。但是在JS中,数组通常以JSON(JavaScript Obj
- 最近项目中的资产的任务状态频频出现问题,查看日志文件,看代码逻辑,也没发现什么具体的错误,总是过段时间就会出现一个表的字段没有更新的问题,很
- 在有些使用 javascript 来渲染数据的时候,为了能动态获取不同的数据,并且保持 javascript&
- 不使用int()函数的情况下把字符串转换为数字,如把字符串"12345"转换为数字12345。方法一:利用str函数既然
- 学习https://matplotlib.org/gallery/index.html 记录,描述不一定准确,具体请参考官网Matplotl
- <%If(Request.QueryString("Page")="") ThenPage=1
- Numpy是什么很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。
- 从AspJpeg1.8 版本开始,AspJpeg 提供了比 PrintText 更为灵活的文本绘图方法PrintTextEx,PrintTe
- 上次还是CSDN里的朋友回答的,我复制了下来。原文如下 =========================== 利用统计文章字数,然后达到一
- 变量类型ECMAScript变量可能包含两种不同类型的数据值:基本类型和引用类型。基本类型基本类型指的是简单的数据段,5种基本数据类型:un
- 一、代码注释介绍注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解
- 1、XML 是什么?XML仅仅是一种数据存放格式,这种格式是一种文本(虽然XML规范中也提供了存放二进制数据的解决方案)。事实上有很多文本格
- ASP是目前一种广为应用的用来快速构建动态WEB站点的编程语言,默认的内置开发语言是VBScript,由于ASP和微软Windows系列操作
- SQL Server对上亿的表进行排序或者上亿的表之间进行join,会导致系统失去响应。◆1.我确实做了一个很大的查询,涉及的数据表有两亿条
- 在开始聊我在阿里四个月的网页推广设计之前,我想先来说说我对平面设计和网页设计的认识。它们之间的交集。1.它们都是集艺术创作、电脑技术和数字技