首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyplot太多刻度,生成速度很慢

pyplot太多刻度,生成速度很慢
EN

Stack Overflow用户
提问于 2021-01-30 19:20:45
回答 2查看 56关注 0票数 0

我正在尝试使用相同的X索引在不同的Y轴上记录两种不同的数据类型:

代码语言:javascript
复制
temperatureData = pd.read_csv("temperatureData.csv")
temperatureData = temperatureData.set_index('Time date')

y1_data1 = temperatureData['Temperature1']
y1_data2 = temperatureData['Temperature2']
y1_data3 = temperatureData['Temperature3']
y1_data4 = temperatureData['Temperature4']
y2_data1 = temperatureData['Vent1']
y2_data2 = temperatureData['Vent2']

x = temperatureData.index

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()  # instantiate a second axes that shares the same x-axis

ax1.set_xlabel('Date Time', color='C0')
ax1.set_ylabel('Temperatures', color='C0')
ax1.tick_params(axis='x', labelcolor='C0', labelrotation=90)
ax1.tick_params(axis='y', labelcolor='C0')

curve1 = ax1.plot(x, y1_data1, label='Temperature1', color='tab:blue')
curve2 = ax1.plot(x, y1_data2, label='Temperature2', color='tab:orange')
curve3 = ax1.plot(x, y1_data3, label='Temperature3', color='tab:green')
curve4 = ax1.plot(x, y1_data4, label='Temperature4', color='tab:red')

ax2.set_ylabel('Open (Deg)', color='C0')
ax2.tick_params(axis='y', labelcolor='C0')
curve5 = ax2.plot(x, y2_data1, label='Vent1', color='r')
curve6 = ax2.plot(x, y2_data2, label='Vent2', color='b')

plt.title('Temperatures', color='C0')
plt.grid('on', linestyle='--')

plt.plot()
plt.show()

然而,现在它可以工作了,输出大约需要5分钟才能生成,因为每个X轴值都是以毫秒为单位采样的两周数据样本。所以你可以理解其中的原因。

有没有办法限制显示的x值?这就是生成速度如此之慢的原因吗?例如,如果我运行一个没有以下行的小样本集:

代码语言:javascript
复制
temperatureData = temperatureData.set_index('Time date')

它生成的图形为:秒= 0.9089131355285645,但是我没有得到X轴上的日期时间值。我只得到了索引号。有了这行代码,我得到了X轴上的日期时间值,但这需要:秒= 208.08867192268372

我试过了:

代码语言:javascript
复制
x = temperatureData['Date Time']

但这只会产生一个KeyError:'Date Time‘我觉得这里有一些关于索引的有趣的东西,我不明白。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-01 04:19:27

好了,我把它算出来了。我必须做的是使用数据帧而不是单独的列:

代码语言:javascript
复制
temperatureData = pd.read_csv("temperatureData.csv")
temperatureData = temperatureData.set_index('Time date')
ventData = pd.read_csv("ventData.csv")
ventData = ventData.set_index('Time date')

dfTemp = temperatureData.set_index('Time date')
vents = ventData.set_index('Time date')

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()

ax1.set_xlabel('Date Time', color='C0')
ax1.set_ylabel('Temperatures', color='C0')
ax2.set_ylabel('Vents', color='C0')
ax1.tick_params(axis='x', labelcolor='C0', labelrotation=90)
ax1.tick_params(axis='y', labelcolor='C0')
ax2.tick_params(axis='y', labelcolor='C0')

curve1 = ax1.plot(dfTemp, label='Temperature supply')
curve2 = ax2.plot(vents, label='Vents')

plt.title('Temperatures', color='C0')
plt.grid('on', linestyle='--')

plt.show()

现在,当我放大等时,它会缩放,加载速度非常快。

票数 0
EN

Stack Overflow用户

发布于 2021-01-30 19:39:33

您可以设置xtick。我使用了另一个数据来演示,您需要设置突出显示的行(倒数第二行)

代码语言:javascript
复制
y1_data1 = temperatureData['TemperatureF']
y1_data2 = temperatureData['Humidity']
y2_data1 = temperatureData['Wind SpeedMPH']

x = temperatureData.index

fig, ax1 = plt.subplots(figsize=(10,5))
ax2 = ax1.twinx()  # instantiate a second axes that shares the same x-axis

ax1.set_xlabel('Date Time', color='C0')
ax1.set_ylabel('Temperatures', color='C0')
ax1.tick_params(axis='x', labelcolor='C0', labelrotation=90)
ax1.tick_params(axis='y', labelcolor='C0')

curve1 = ax1.plot(x, y1_data1, label='Temperature1', color='tab:blue')
curve2 = ax1.plot(x, y1_data2, label='Temperature2', color='tab:orange')

ax2.set_ylabel('Open (Deg)', color='C0')
ax2.tick_params(axis='y', labelcolor='C0')
curve5 = ax2.plot(x, y2_data1, label='Vent1', color='r')

plt.title('Temperatures', color='C0')
plt.grid('on', linestyle='--')

# set ticks here
ax1.set_xticks(range(0,len(x), 100))    #set interval here

plt.show()

以100为间隔

以200为间隔

您可以根据需要设置间隔。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65967365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档