Graph Plot轴缩放/设计/时间格式

时间:2015-05-30 17:16:29

标签: python pandas matplotlib

我目前的Pandas / python情节如下:

Plot

我喜欢什么:

  • 我想摆脱两个y轴上的1e71e9。这两个时间序列的值是数百万和数十亿,因此数字的分隔符将是可读性的加号。
  • 我喜欢在背景中有一个(浅色)网格,并且轴上至少有法线。
  • 我喜欢按月缩放,而不是每隔6个月在x轴上
  • 如何添加下面的图例?

当前代码是(交易1和交易量2是交易量的时间序列):

ax = data.transactions1.plot(figsize=(12, 3.5))
data.transactions2.plot(secondary_y=True)

1 个答案:

答案 0 :(得分:0)

以下代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as ticker
import datetime
from matplotlib.ticker import ScalarFormatter

base = datetime.datetime.today()

numdays = 365

date_list = [base - datetime.timedelta(days=x) for x in range(0, numdays)]

x = np.arange(0, numdays, 1)

values1 = 0.05 * x**2*1e9

values2 = -1*values1*1e7

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()

lns1 = ax1.plot(date_list, values1, 'g-', label='Foo')
lns2 = ax2.plot(date_list, values2, 'b-', label='Bar')

# We set the date format
dareFmt = mdates.DateFormatter('%b %Y')

# We then apply the format
ax1.xaxis.set_major_formatter(dareFmt)
ax1.set_xlabel('Dates')

#used to give the inclination
fig.autofmt_xdate()


# Dsiplay the grid
ax1.grid(True)

# To get rid of the 1eX on top i divide the values of the y axis by the exponent value
y_values = ax1.get_yticks().tolist()
y_values = [x / 1e12 for x in y_values]
ax1.set_yticklabels(y_values)
ax1.set_ylabel('10e12')


y_values = ax2.get_yticks().tolist()
y_values = [x / 1e19 for x in y_values]
ax2.set_yticklabels(y_values)
ax2.set_ylabel('10e19')



lns = lns1 + lns2
labs = [l.get_label() for l in lns]
ax1.legend(lns, labs,bbox_to_anchor=(0., -0.25, 1., .102), loc=3,
           ncol=2, mode="expand", borderaxespad=0.)

plt.show()

给你:

plot_example