【发布时间】:2020-01-05 03:33:01
【问题描述】:
我有一个由1440 rows × 297 columns 组成的数据集。我试图根据时间(X 轴)和密度(Y 轴)绘制03_jan_2018,但我遇到了一个问题。结果图不够清晰,X轴也没有出现!!
但我的结局是这样的:
谁能帮帮我?
提前致谢!
【问题讨论】:
标签: python-3.x matplotlib jupyter-notebook
我有一个由1440 rows × 297 columns 组成的数据集。我试图根据时间(X 轴)和密度(Y 轴)绘制03_jan_2018,但我遇到了一个问题。结果图不够清晰,X轴也没有出现!!
但我的结局是这样的:
谁能帮帮我?
提前致谢!
【问题讨论】:
标签: python-3.x matplotlib jupyter-notebook
一个简单的解决方法是增加图形大小。
plt.figure(figsize=(80,40))
plt.plot(data.hour_formatted, data['03_jan_18'])
plt.show()
【讨论】:
我会使用plt.xticks(np.arange(0,25,6)) 来选择您想要的时间。看起来默认情况下它试图放入太多的值,实际上你只需要少数几个值(在这种情况下,只有每 6 小时有一个刻度)。调整范围值以提供您想要的值。
【讨论】:
data.hour_formatted时的输出是什么样的?喜欢给我data.hour_formatted[-5:]。
x 轴已出现,但您似乎面临与here 所述相同的问题。无论如何,我将向您展示如何获得您想要的内容,同时避免 x 轴符号可能出现的问题。
情节 1:
代码 1:
# imports
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# random data or other data sources
np.random.seed(123)
rows = 1440
df = pd.DataFrame(np.random.uniform(-1,1,size=(rows, 2)),
index=pd.date_range('1/1/2000', periods=1440),
columns=list('AB'))
df['A'] = df['A'].cumsum()
df['B'] = df['B'].cumsum()
# Plot
fig, ax = plt.subplots()
t = df.index
ax.plot(t, df['A'])
ax.plot(t, df['B'], color='red')
您还可以像这样编辑和调整轴符号:
情节 2:
代码 2:
# imports
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# random data or other data sources
np.random.seed(123)
rows = 1440
df = pd.DataFrame(np.random.uniform(-1,1,size=(rows, 2)),
index=pd.date_range('1/1/2020', periods=1440),
columns=list('AB'))
df['A'] = df['A'].cumsum()
df['B'] = df['B'].cumsum()
# Make a list of empty myLabels
myLabels = ['']*len(df.index)
# Plot
fig, ax = plt.subplots()
t = df.index
ax.plot(t, df['A'])
ax.plot(t, df['B'], color='red')
# Set labels on every Nth element in myLabels specified by the interval variable
myLabels = ['']*len(df.index)
interval = 2
myLabels[::interval] = [item.strftime('%Y - %m - %d') for item in df.index[::interval]]
ax.xaxis.set_major_formatter(ticker.FixedFormatter(myLabels))
plt.gcf().autofmt_xdate()
# Tilt the labels
plt.setp(ax.get_xticklabels(), rotation=30, fontsize=10)
plt.show()
【讨论】: