我在matplotlib中使用的不同方法中迷失了方向。在
我想创建一个彩色编码散点图,色条在侧面,日期时间在x轴上。在
但是根据我如何定义我的ax
,我会得到不同的错误。
以下是我代码的核心:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import matplotlib.cm as cm
import matplotlib.dates as mdates
#.....loading files etc.
norm = mcolors.Normalize(vmin=0,vmax=1000)
timerange = pd.date_range(start='2015-01-01', end='2016-01-01', freq='30D')
### PLOTTING
fig = plt.figure(figsize=(6.,5))
ax = fig.add_subplot(111)
for Af in Afiles:
for index, row in Af.iterrows():
time = pd.to_datetime(row['date'], format="%Y-%m-%d")
plt.scatter(time, row['A'], c=row['z'], norm=norm, cmap=colormap,edgecolor='k', lw=0.8, s=80)
plt.xticks(timerange, rotation=90)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%d/%m/%Y"))
plt.xlabel('Time', fontsize=11, color='k')
clb = fig.colorbar(ax)
clb.ax.set_title('Value', y=-0.125, fontsize=11)
clb.ax.invert_yaxis()
fig.tight_layout()
这将产生AttributeError: 'AxesSubplot' object has no attribute 'autoscale_None'
但是如果我指定我的ax
作为散点图,这样我就可以进行颜色编码了,那么轴格式化程序就有问题了。
改为写入ax = plt.scatter
生成{
如何同时具有colorbar和格式化轴刻度?在
基本思想是需要为colorbar添加一个额外的轴。在
很难知道这是否完全匹配,因为您还没有提供一个有效的数据示例。但这至少可以作为一个模板。在
首先,一些示例数据:
现在绘制:
^{pr2}$现在添加colorbar:
不要调用散点
ax
。(这将覆盖现有轴ax
。)colorbar希望第一个参数是ScalarMapTable(例如散布)。由于散射都是标准化的,所以可以从循环中使用它
然后
^{pr2}$其余的应该保持不变。在
相关问题 更多 >
编程相关推荐