我想使用以下代码在X轴上绘制一个带有许多刻度的图形:
import pylab
N = 100
data = pylab.np.linspace(0, N, N)
pylab.plot(data)
pylab.xticks(range(N)) # add loads of ticks
pylab.grid()
pylab.tight_layout()
pylab.show()
pylab.close()
Run Code Online (Sandbox Code Playgroud)
结果图如下所示:
正如您所看到的,X轴是一团糟,因为刻度标签的绘制空间太小甚至重叠.
我想在每个刻度标签之间自动创建恒定的空间,无论有多少刻度.因此,我想增加单个刻度之间的空间,从而可能增加绘图的"长度".
请注意,刻度标签可以是可变长度的字符串.
到目前为止我发现的是关于轴和标签之间的间距(这不是我想要的),刻度频率(我已经可以做)和刻度参数(似乎没有任何间距选项).
我可以手动更改图形的大小matplotlib.pyplot.figure(figsize=(a, b)),但这需要知道刻度线之间的默认间距(据我所知,没有)和刻度标签的最大宽度(以英寸为单位),我没有如何衡量,所以这不是一个选择,在我看来.
我该怎么做才能增加蜱之间的间距?得到一个相当冗长的图像我很好.
给定 500x500 像素的图像,我想在屏幕上以 1:1 的比例显示该图像。另外我想要一个 x 和 y 轴。
plt.imshow() 自动将轴添加到我的图像并将图像在窗口中居中,但图像被缩放并且在我的屏幕上未显示为 500x500 像素。fig.figimage()在我的屏幕上以 1:1 显示图像,但不添加轴并在窗口的左下角显示图像。特别是最大化窗口/调整窗口大小不会改变图像的大小。现在我需要的是两者的结合 - 像 1:1 一样显示图像fig.figshow,添加轴,像这样plt.imshow()添加和显示图像居中plt.imshow()。
我怎样才能做到这一点?或者换句话说:如何告诉plt.imshow()显示像未缩放的图像fig.figimage()?
演示问题的示例代码:
import matplotlib.pyplot as plt
import numpy as np
width=500;
height=500;
# using plt.imshow()
dummyImage = np.zeros((width, height))
plt.imshow(dummyImage)
plt.show()
# using fig.figimage()
fig = plt.figure(figsize=(width, height))
fig.figimage(dummyImage)
plt.show()
Run Code Online (Sandbox Code Playgroud)
结果:
使用plt.imshow():不完全是 500x500 像素,实际大小取决于窗口的大小。

使用fig.figimage():正好 500x500 像素,与窗口大小无关
在我的程序中,我先获取了图形,然后将图形导入到画布中。然后我将画布导入滚动区域。当我运行我的程序时,如果我向左滚动,yaxis 刻度标签会隐藏,或者我向右滚动,yaxis 刻度标签也会隐藏。我已经采取了两个轴。轴,轴 2。我已经设置了axes2.yaxis.tick_right() 和axes.yaxis.tick_right()。
我希望 yaxis 刻度标签将保持在右侧并且 alyas 可见,无论我向左或向右滚动。
import sys
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from PyQt5.QtWidgets import QMainWindow,QVBoxLayout
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtCore, QtGui, QtWidgets
import datetime
from matplotlib.dates import num2date, date2num
from mpl_finance import candlestick_ochl as candlestick
import numpy as np
import matplotlib.ticker as ticker
import matplotlib.dates as mdates
import pylab as pl
class MainWindow_code_serarch(object):
def setup_code_serarch(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(870, 680)
self.centralwidget = QtWidgets.QWidget(MainWindow) …Run Code Online (Sandbox Code Playgroud)