在matlab中,可以直接获取和设置图上现有轴的位置:
pos = get(gca(), 'position')
set(gca(), 'position', pos)
Run Code Online (Sandbox Code Playgroud)
我怎么在Matplotlib中这样做?
我出于两个相关原因需要这个:
这些是我试图解决的具体问题:
我有一列子图,其中一些有颜色条,有些没有,并且它们的宽度不同,即X轴不对齐.colorbar从轴上窃取空间.这也发生在matlab中,我会使用上面的技巧通过将带有颜色条的轴的宽度复制到没有颜色条的轴来使所有轴同样宽.
通过收缩轴在各个子图之间添加空格.adjust_subplots()函数调整所有子图相同.
我在使用双轴更改刻度标签属性时遇到问题.我希望文本很小,并且字体与默认字体不同.我找到了一种方法,直到我尝试使用twiny().第二个轴不响应刻度格式化指令,如图所示.我错过了一些关键的东西,或者matplotlib中是否有错误?
Ubuntu 12.04,Python 2.7.3,matplotlib 1.1.1rc
#!/usr/bin/env python
# coding: utf-8
from matplotlib import pyplot as p
from numpy import sin, cos, arange
x = arange(0, 10, .01)
for plotnum in range(1,5):
p.subplot(2, 2, plotnum)
ax1 = p.gca()
p.plot(sin(x),x)
ax2 = p.twiny()
p.plot(cos(x)+plotnum,x, 'g--')
# Set size all tick labels
# Works for first axes (lower x-ticks) and can also change font
for tickset in [ax1.xaxis.get_major_ticks()]:
[(tick.label.set_fontsize(plotnum*4), tick.label.set_fontname('ubuntu mono')) for tick in tickset]
# Does not work for second axes (upper …Run Code Online (Sandbox Code Playgroud) 当我重新采样 Pandas 时间序列以减少数据点数量时,每个结果数据点的时间戳位于每个重新采样箱的开头。当以不同的重采样率过度绘制图形时,这会导致数据的明显偏移。无论重采样率如何,如何将重采样数据的时间戳“居中”在其 bin 中?
我现在得到的是(重新采样到一小时时):
In [12]: d_r.head()
Out[12]:
2017-01-01 00:00:00 0.330567
2017-01-01 01:00:00 0.846968
2017-01-01 02:00:00 0.965027
2017-01-01 03:00:00 0.629218
2017-01-01 04:00:00 -0.002522
Freq: H, dtype: float64
Run Code Online (Sandbox Code Playgroud)
我想要的是:
In [12]: d_r.head()
Out[12]:
2017-01-01 00:30:00 0.330567
2017-01-01 01:30:00 0.846968
2017-01-01 02:30:00 0.965027
2017-01-01 03:30:00 0.629218
2017-01-01 04:30:00 -0.002522
Freq: H, dtype: float64
Run Code Online (Sandbox Code Playgroud)
MWE 显示明显转变:
#!/usr/bin/env python3
Minimal working example:
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
import seaborn
seaborn.set()
plt.ion()
# sample …Run Code Online (Sandbox Code Playgroud)