首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我有用Python和Matplotlib制作的图形

我有用Python和Matplotlib制作的图形
EN

Stack Overflow用户
提问于 2019-07-24 04:28:25
回答 1查看 51关注 0票数 1

我有下面的代码来生成一个图形,其中x​​轴作为日期轴,2个y轴,一个用于MP-10,另一个用于我想要制作条形的设备。

代码语言:javascript
复制
date = ["2017-05-20 20:49","2017-05-20 20:50","2017-05-20 20:51","2017-05-20 20:52","2017-05-20 20:53","2017-05-20 20:54","2017-05-20 20:55",
       "2017-05-20 20:56","2017-05-20 20:57","2017-05-20 20:58","2017-05-20 20:59","2017-05-20 21:00","2017-05-20 21:01","2017-05-20 21:02",
       "2017-05-20 21:03","2017-05-20 21:04","2017-05-20 21:05","2017-05-20 21:06","2017-05-20 21:07","2017-05-20 21:08","2017-05-20 21:09",
       "2017-05-20 21:10","2017-05-20 21:11","2017-05-20 21:12","2017-05-20 21:13","2017-05-20 21:14","2017-05-20 21:15","2017-05-20 21:16",
       "2017-05-20 21:17","2017-05-20 21:18","2017-05-20 21:19","2017-05-20 21:20","2017-05-20 21:21","2017-05-20 21:22","2017-05-20 21:23"]
date = pd.to_datetime(date)
mp_10 = [502,507,514,521,528,533,539,544,548,551,553,554,555,555,555,554,553,552,551,551,550,548,547,545,543,541,538,534,530,525,520,515,510,506,501]
equipos = [11,11,11,16,18,19,21,24,24,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1] #35

df = pd.DataFrame({"fecha": date, "mp-10": mp_10, "totalEquipos": equipos})


## PLOT
sns.set(style='whitegrid', palette="deep", font_scale=1.1, rc={"figure.figsize": [8, 5]})
myFmt = mdates.DateFormatter("%H:%M")
fig, ax = plt.subplots(figsize=(15,8))
#PLot Line
plot_line = ax.plot(df.fecha, df['mp-10'], color='teal', marker='o')
ax.set_xlim(["2017-05-20 20:46", "2017-05-20 21:25"])
ax.set_xticklabels(df.fecha)
ax.set_ylim([0,700])
ax.set_xlabel("Hora: (20:49 - 21:23)", fontsize= 18)
ax.set_ylabel("MP-10 (ug/m3N)", color="teal", fontsize = 18)
ax.set_title("Peak 3 - MP-10 - Otoño - 20/05/2017", fontsize = 20)
ax.tick_params(axis='y', labelcolor="teal")
#Plot Bar
ax2 = ax.twinx()
plot_bar= ax2.bar(x = 'fecha', height = 'totalEquipos', data = df, color= 'purple', label='Total equipos', align = 'edge', linewidth= 4)
ax2.tick_params(axis='y', labelcolor= 'purple')
ax2.set_ylabel("Total equipos", color = 'purple', fontsize = 18)
ax2.set_ylim([0,40])
ax2.tick_params(axis='y')
#Legends
lns = plot_line + [plot_bar]
labs = [l.get_label() for l in lns]
ax.legend(lns, labs, loc='center', fontsize=15)
fig.tight_layout()
ax.xaxis.set_major_formatter(myFmt); 

该代码生成以下线形图和条形图:

我的问题是,用蓝色标记的区域是其他区域,我不知道如何删除它。有没有人知道如何修复这个问题,以便正确显示图形?

另一张图显示了条形图应该遵循的正确的点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-24 04:50:13

问题是条形图的默认宽度是0.8,所以你看到的紫色大矩形实际上是一个条形图。你可以玩它,这样你就可以有更小的条了:

代码语言:javascript
复制
plot_bar= ax2.bar(x = 'fecha', 
                  height = 'totalEquipos', 
                  data = df, color= 'purple', 
                  label='Total equipos', 
                  align = 'edge', width=0.0005)

提供:

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

https://stackoverflow.com/questions/57171738

复制
相关文章

相似问题

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