【发布时间】:2014-01-14 17:58:56
【问题描述】:
我正在尝试制作一个图表来显示数据库中的日常数据。我在这里为特定的一天制作了这张图。我对这里的一些细节不满意,我不知道我应该寻找什么关键字。
我拥有的是
但我希望图表看起来像(忽略颜色等):
在我的图像中,x 轴上的时间从创建第一个时间戳时开始(图像显示的那天是上午 8 点,但每天从不同的时间开始),但我希望时间总是从 7:00:00 开始.这是创建时间戳的最早时间。
其次,我想在绘图边缘和第一个/最后一个条之间留出一些空间。我不希望酒吧触及情节的边缘。
我的代码在这里。
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)
【问题讨论】:
-
您的图片没有通过(您没有足够的代表自行发布它们,将它们放在公开的地方,高级代表用户可以为您编辑它们)。还请包括您用于生成图形的代码。
-
我们离一个好问题越来越近了。如果可以,请删除 SQL 语句并发布带有示例数据的 minimal 工作示例。这样我们就可以重现有问题的图片。
-
如果你想避免事情发生在情节的边缘,也可以看看
ax.margins(或等效的plt.margins)。在您的特定情况下,如果您不想让绘图始终在特定时间开始,并且只是希望自动缩放在边缘留出一些空间,ax.margins(0.05, 0)将沿 x 方向添加 5% 的填充和零沿 y 方向填充。
标签: python matplotlib