轴和图之间的pyplot距离

时间:2014-01-14 17:58:56

标签: python matplotlib

我正在尝试制作一个图表来显示数据库中的日常数据。我之前在特定日期制作了此图表。我不满意这里的一些细节,我不知道应该寻找什么关键字。

我拥有的是

enter image description here

但我希望图表看起来像(忽略颜色等):

enter image description here

在我的图像中,x轴上的时间从第一个TimeStamp创建时开始(图像显示的那天是早上8点但每天从不同时间开始),但我希望小时始终从7:00:00开始。这是创建TimeStamp的最早时间。

其次,我想在图的边缘和第一个/最后一个条之间留出一些空格。我不希望酒吧触及情节的边缘。

我的代码就在这里。

import MySQLdb
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import pandas as pd

# connect to MySQL database
conn = MySQLdb.connect(host="localhost", user="r1", passwd="!r1db!",
db="r1array")
# prepare a cursor
cur = conn.cursor()

# this is the query we'll be making
query = """SELECT TimeStamp,Pac FROM SolarData WHERE DATE(`TimeStamp`) = CURDATE()-6 GROUP BY HOUR(TimeStamp);"""

# execute the query
cur.execute(query)
# retrieve the whole result set
data = cur.fetchall()

# close cursor and connection
cur.close()
conn.close()

# unpack data in TimeStamp (x axis) and Pac (y axis)
TimeStamp, Pac = zip(*data)

# graph code
fig = plt.figure()
ax = fig.add_subplot()
plt.bar(TimeStamp, Pac, align='center', width=0.015)

# set title, X/Y labels
plt.title("PVIC R1 panel ")
plt.xlabel("Hour")
plt.ylabel("Pac")
fig = plt.gcf()
fig.set_size_inches(20.5,10.5)
plt.grid(True)
plt.draw()
fig.savefig('test.png', dpi=100)

1 个答案:

答案 0 :(得分:2)

  

...我希望小时总是从7:00:00开始......其次,我想在小区的边缘和第一个/最后一个小节之间留出一些空格。

使用plt.xlim设置开始和结束时间。以下是一些玩具数据的示例:

import datetime
import pylab as plt

# Some sample data
X = [datetime.datetime(2000, 3, 2, n) for n in xrange(9,13)]
Y = [4,8,3,2]

# Set the limits
start_time = datetime.datetime(2000, 3, 2, 7)
end_time = datetime.datetime(2000, 3, 2, 14)

plt.bar(X, Y, align='center',width=.015)
plt.gcf().autofmt_xdate()
plt.xlim(start_time, end_time)
plt.show()

enter image description here