Python matplotlib,组合两个单独的轴,然后打印数据
我想创建单个轴,然后选择其中的两个轴来绘制数据。例如:Python matplotlib,组合两个单独的轴,然后打印数据,python,matplotlib,graph,plot,Python,Matplotlib,Graph,Plot,我想创建单个轴,然后选择其中的两个轴来绘制数据。例如: x_axis = XAxis(fig, position=(0.2, 0.1), length=0.7) y_axis = YAxis(fig, position=(0.1, 0.2), length=0.7) plot_within_axes(fig, x_axis, y_axis, np.random.random_sample(5)) 这是我的实现,当然,我对它不满意: import random import numpy as
x_axis = XAxis(fig, position=(0.2, 0.1), length=0.7)
y_axis = YAxis(fig, position=(0.1, 0.2), length=0.7)
plot_within_axes(fig, x_axis, y_axis, np.random.random_sample(5))
这是我的实现,当然,我对它不满意:
import random
import numpy as np
import matplotlib.pyplot as plt
class XAxis:
def __init__(self, figure, position, length):
self.position = position
self.length = length
axes = figure.add_axes([position[0], position[1], length, 0.1])
axes.spines['top'].set_visible(False)
axes.spines['left'].set_visible(False)
axes.spines['right'].set_visible(False)
axes.xaxis.set_ticks_position('bottom')
axes.set_yticks([])
axes.patch.set_alpha(0)
self.axes = axes
class YAxis:
def __init__(self, figure, position, length):
self.position = position
self.length = length
axes = fig.add_axes([position[0], position[1], 0.1, length])
axes.spines['top'].set_visible(False)
axes.spines['bottom'].set_visible(False)
axes.spines['right'].set_visible(False)
axes.yaxis.set_ticks_position('left')
axes.set_xticks([])
axes.patch.set_alpha(0)
self.axes = axes
def plot_within_axes(figure, x_axis, y_axis, values):
axes = fig.add_axes([x_axis.position[0], y_axis.position[1], x_axis.length, y_axis.length])
x_limits = x_axis.axes.get_xlim()
axes.plot(np.linspace(x_limits[0], x_limits[1], len(values), endpoint=True), values)
axes.set_ylim(y_axis.axes.get_ylim())
axes.set_xticks([])
axes.set_yticks([])
axes.patch.set_alpha(0)
fig = plt.figure()
x_axis = XAxis(fig, position=(0.2, 0.1), length=0.7)
y_axis = YAxis(fig, position=(0.1, 0.2), length=0.7)
plot_within_axes(fig, x_axis, y_axis, np.random.random_sample(5))
fig.patch.set_facecolor('white')
plt.show()
(我用两个绘图区域画了两个轴,我隐藏了不需要的刺、不需要的记号、不需要的背景,我用第三个绘图区域画了我的数据,这是一个非常难看的把戏)
我不知道是否可以使用matplotlib处理单个轴。对我来说,轴是一条直线,但对matplotlib来说,画一个个体轴是没有意义的
是否可以使用matplotlib低级原语执行此操作
我的最终目标是创建一个应用程序来处理轴,在任何(x,y)位置绘制它们,而不使用任何难看的技巧,当然,在这些轴内绘制图形