使用 python matplotlib 绘制 3 维
Drawing 3 dimension using python matplotlib
我正在尝试使用 python 绘制以下图表。
你能帮帮我吗?
感谢
你可以试试这个。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'realtime':[2,3,4,2,4],
'esttime':[1,1,3,1,4],
'time of 5 mins': ['09:15','09:20','09:25','09:30','09:35']})
df
realtime esttime time of 5 mins
0 2 1 9:15
1 3 1 9:20
2 4 3 9:25
3 2 1 9:30
4 4 4 9:35
使用 pd.to_datetime
.
将您的 time of 5 mins
转换为有效的 datetime
对象
df['time of 5 mins']=pd.to_datetime(df['time of 5 mins'],format='%H:%M').dt.strftime('%H:%M')
输出:
现在,使用 time of 5 mins
作为 realtime
和 esttime
的 X 轴和 Y 轴,并使用 matplotlib.pyplot.plot.annotate
作为第 3 个维度。
index= ['A', 'B', 'C', 'D', 'E']
plt.plot(df['time of 5 mins'],df['esttime'],marker='o',alpha=0.8,color='#CD5C5C',lw=0.8)
plt.plot(df['time of 5 mins'],df['realtime'],marker='o',alpha=0.8,color='green',lw=0.8)
ax= plt.gca() #gca is get current axes
for i,txt in enumerate(index):
ax.annotate(txt,(df['time of 5 mins'][i],df['realtime'][i]))
ax.annotate(txt,(df['time of 5 mins'][i],df['esttime'][i]))
plt.show()
为了使绘图更完整,添加 legend
、xlabel
、ylabel
、title
,并稍微拉伸 X-Y Axis
范围,以便它将在视觉上具有美感。有关 matplotlib.pyplot here
的更多详细信息
import matplotlib.pyplot as plt
import numpy as np
y = [2, 3, 4, 2, 4]
y2 = [1, 1, 3, 1, 4]
a = ['9:15', '9:20', '9:25', '9:30', '9:35']
x = np.arange(5)
fig = plt.figure()
ax = plt.subplot(111)
ax.plot(x, y, label='Real Time')
ax.plot(x, y2, label='Estimated Time')
plt.xticks(x, labels=a)
plt.xlabel('Time')
chartBox = ax.get_position()
ax.set_position([chartBox.x0, chartBox.y0, chartBox.width*0.6, chartBox.height])
ax.legend(loc='upper center', bbox_to_anchor=(1.45, 0.8), shadow=True, ncol=1)
plt.show()
我正在尝试使用 python 绘制以下图表。 你能帮帮我吗?
感谢
你可以试试这个。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'realtime':[2,3,4,2,4],
'esttime':[1,1,3,1,4],
'time of 5 mins': ['09:15','09:20','09:25','09:30','09:35']})
df
realtime esttime time of 5 mins
0 2 1 9:15
1 3 1 9:20
2 4 3 9:25
3 2 1 9:30
4 4 4 9:35
使用 pd.to_datetime
.
time of 5 mins
转换为有效的 datetime
对象
df['time of 5 mins']=pd.to_datetime(df['time of 5 mins'],format='%H:%M').dt.strftime('%H:%M')
输出:
现在,使用 time of 5 mins
作为 realtime
和 esttime
的 X 轴和 Y 轴,并使用 matplotlib.pyplot.plot.annotate
作为第 3 个维度。
index= ['A', 'B', 'C', 'D', 'E']
plt.plot(df['time of 5 mins'],df['esttime'],marker='o',alpha=0.8,color='#CD5C5C',lw=0.8)
plt.plot(df['time of 5 mins'],df['realtime'],marker='o',alpha=0.8,color='green',lw=0.8)
ax= plt.gca() #gca is get current axes
for i,txt in enumerate(index):
ax.annotate(txt,(df['time of 5 mins'][i],df['realtime'][i]))
ax.annotate(txt,(df['time of 5 mins'][i],df['esttime'][i]))
plt.show()
为了使绘图更完整,添加 legend
、xlabel
、ylabel
、title
,并稍微拉伸 X-Y Axis
范围,以便它将在视觉上具有美感。有关 matplotlib.pyplot here
import matplotlib.pyplot as plt
import numpy as np
y = [2, 3, 4, 2, 4]
y2 = [1, 1, 3, 1, 4]
a = ['9:15', '9:20', '9:25', '9:30', '9:35']
x = np.arange(5)
fig = plt.figure()
ax = plt.subplot(111)
ax.plot(x, y, label='Real Time')
ax.plot(x, y2, label='Estimated Time')
plt.xticks(x, labels=a)
plt.xlabel('Time')
chartBox = ax.get_position()
ax.set_position([chartBox.x0, chartBox.y0, chartBox.width*0.6, chartBox.height])
ax.legend(loc='upper center', bbox_to_anchor=(1.45, 0.8), shadow=True, ncol=1)
plt.show()