我从减去两个日期时间得到了一个timedelta对象.我需要将此值作为浮点进行进一步计算.我发现的所有内容都可以使用浮点计算,但结果仍然是timedelta对象.
time_d = datetime_1 - datetime_2
time_d_float = float(time_d)
Run Code Online (Sandbox Code Playgroud)
不起作用.
我需要matplotlib中的一个数字,其中两个轴的长度始终相同.为此,我使用"相等"选项.在大多数情况下,它工作得很好,我得到了预期的结果(见图1),但是当y轴的值远高于x时,该图显示了一个意外的行为(见图2).有谁知道matplotlib的这种行为?
Danke,Jörg
host = SubplotHost(fig, 111)
try:
min_x_val = min(x for x in self.x_values if x is not None)
max_x_val = max(self.x_values)
except ValueError:
return
max_y_val = list()
for n, evaluator in enumerate(self.cleaned_evaluators):
max_y_val.append(max(self.y_values[n]))
# axis settings
host.axis['left'].label.set_fontsize('small')
host.axis['left'].major_ticklabels.set_fontsize('small')
host.axis['bottom'].label.set_fontsize('small')
host.axis['bottom'].major_ticklabels.set_fontsize('small')
host.axis['bottom'].major_ticklabels.set_rotation(0)
host.set_ylabel(y_label)
host.set_xlabel(x_label)
host.set_xlim(0, max_x_val)
host.set_ylim(0, max_y_val)
host.minorticks_on()
host.toggle_axisline(False)
host.axes.set_aspect('equal')
host.grid(True, alpha=0.4)
return fig
Run Code Online (Sandbox Code Playgroud)
图1:

图2:

我尝试在一个图中绘制两个极坐标图.见下面的代码:
fig = super(PlotWindPowerDensity, self).get_figure()
rect = [0.1, 0.1, 0.8, 0.8]
ax = WindSpeedDirectionAxes(fig, rect)
self.values_dict = collections.OrderedDict(sorted(self.values_dict.items()))
values = self.values_dict.items()
di, wpd = zip(*values)
wpd = np.array(wpd).astype(np.double)
wpdmask = np.isfinite(wpd)
theta = self.radar_factory(int(len(wpd)))
# spider plot
ax.plot(theta[wpdmask], wpd[wpdmask], color = 'b', alpha = 0.5)
ax.fill(theta[wpdmask], wpd[wpdmask], facecolor = 'b', alpha = 0.5)
# bar plot
ax.plot_bar(table=self.table, sectors=self.sectors, speedbins=self.wpdbins, option='wind_power_density', colorfn=get_sequential_colors)
fig.add_axes(ax)
return fig
Run Code Online (Sandbox Code Playgroud)

条形的长度是数据库(该扇区的采样点数).条形图的颜色显示相应扇区中某些值区(例如2.5-5 m/s)的频率(蓝色:低,红色:高).蓝蜘蛛图显示每个扇区的平均值.
在所示的图中,每个图的值是相似的,但这种情况很少见.我需要将第二个绘图分配给另一个轴并在另一个方向上显示该轴.
编辑:
在乔的好答案之后,我得到了这个数字的结果.
这几乎是我想要实现的一切.但有些观点我无法弄清楚.
该图用于动态变化的数据库.因此,我需要一种动态的方式来获得圆圈的相同位置.直到现在我解决它:
start, end = ax2.get_ylim()
ax2.yaxis.set_ticks(np.arange(0, end, end / len(ax.yaxis.get_ticklocs()))) …Run Code Online (Sandbox Code Playgroud)