Python 散景刻度标签
Python Bokeh Tick Labels
我是散景的新手,正在尝试在折线图中绘制股票数据
X 轴应该是日期,Y 轴是股票的收盘价。
这是我的代码示例:
data = pd.DataFrame({'Symbol' : ['AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD',],
'Previous_Close' : [10,20,30,10,20,30,10,20,30,10,20,30,10,20,30,10,20,30,],
'Date' : pd.to_datetime(['01/01/16', '01/01/16', '01/01/16', '01/02/16', '01/02/16', '01/02/16', '01/03/16', '01/03/16', '01/03/16', '01/04/16',
'01/04/16', '01/04/16', '01/05/16', '01/05/16', '01/05/16', '01/06/16', '01/06/16', '01/06/16'], format = '%m/%d/%y')})
Symbols = [sym for sym in data.Symbol.unique()]
Dates = [date for date in data.Date.unique()]
format_dates = [date.strftime('%b%d_%y') for date in dates]
colors = ['Darkred', 'Orange', 'Navy']
output_notebook()
TOOLS = ['hover','pan','box_zoom','resize', 'save', 'reset']
# CREATE FIGURE
p = figure(width = 800, height = 600, tools = TOOLS)
cnum = 0
# PLOT
for sym in Symbols:
# plot stock closing price
p.line(range(len(dates)), data[data.Symbol==sym].Previous_Close, color = colors[cnum])
# add stock symbol as text label to end of line
p.text(len(Symbols), data[data.Symbol==sym].Previous_Close.iloc[-1], [sym],
text_color = colors[cnum], text_font_size = '10pt')
cnum +=1
show(p)
明明是这里编的数据,但是思路是一样的。我想要的只是将 x 刻度标签设置为格式化的日期名称。在 Pyplot 中我会这样做:
ax.set_xticklables(format_dates)
axis()
我已经尝试将 x_axis_type 设置为 'datetime' 但这只会给我毫秒数。我试过使用 DateTimeFormatter() 但要么我不明白如何使用它,要么它不工作(可能是前者)。
我尝试过的事情(重新回答):
这会将 x 轴更改为毫秒:
p = 图(宽度 = 800,高度 = 600,x_axis_type='datetime',工具 = 工具)
cnum = 0
# PLOT
for sym in Symbols:
# NO CHANGE TO X ARG
p.line(range(len(dates)), data[data.Symbol==sym].Previous_Close, color = colors[cnum])
这会将 x 刻度更改为从 1970 年开始的几十年:
p = 图(宽度 = 800,高度 = 600,x_axis_type='datetime',工具 = 工具)
cnum = 0
# PLOT
for sym in Symbols:
# CHANGE X ARG TO DATETIME DATES
p.line(dates, data[data.Symbol==sym].Previous_Close, color = colors[cnum])
使用:
p = figure(width = 800, height = 600, x_axis_type='datetime', tools = TOOLS)
您的 pandas 索引似乎出了问题。我认为这段代码应该有效:
import numpy as np
import pandas as pd
from bokeh.plotting import figure, output_file, show
data = pd.DataFrame({'Symbol' : ['AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD',],
'Previous_Close' : [10,20,30,10,20,30,10,20,30,10,20,30,10,20,30,10,20,30,],
'Date' : pd.to_datetime(['01/01/16', '01/01/16', '01/01/16', '01/02/16', '01/02/16', '01/02/16', '01/03/16', '01/03/16', '01/03/16', '01/04/16', '01/04/16', '01/04/16', '01/05/16', '01/05/16', '01/05/16', '01/06/16', '01/06/16', '01/06/16'], format = '%m/%d/%y')})
symbols = [sym for sym in data.Symbol.unique()]
dates = [date for date in data.Date.unique()]
dates.sort()
lastDate = dates[-1]
colors = ['Darkred', 'Orange', 'Navy']
output_notebook()
TOOLS = ['hover','pan','box_zoom','resize', 'save', 'reset']
# CREATE FIGURE
p = figure(width = 800, height = 600, tools = TOOLS, x_axis_type="datetime")
# PLOT
for cnum, sym in enumerate(symbols):
# plot stock closing price
p.line(data[data.Symbol==sym].Date.values, data[data.Symbol==sym].Previous_Close.values, color = colors[cnum])
p.text(data[data.Date==lastDate].Date.values, data[data.Date==lastDate].Previous_Close.values, data[data.Date==lastDate].Symbol.values, text_color = colors, text_font_size = '10pt')
show(p)
这是输出的样子:
我是散景的新手,正在尝试在折线图中绘制股票数据 X 轴应该是日期,Y 轴是股票的收盘价。
这是我的代码示例:
data = pd.DataFrame({'Symbol' : ['AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD',],
'Previous_Close' : [10,20,30,10,20,30,10,20,30,10,20,30,10,20,30,10,20,30,],
'Date' : pd.to_datetime(['01/01/16', '01/01/16', '01/01/16', '01/02/16', '01/02/16', '01/02/16', '01/03/16', '01/03/16', '01/03/16', '01/04/16',
'01/04/16', '01/04/16', '01/05/16', '01/05/16', '01/05/16', '01/06/16', '01/06/16', '01/06/16'], format = '%m/%d/%y')})
Symbols = [sym for sym in data.Symbol.unique()]
Dates = [date for date in data.Date.unique()]
format_dates = [date.strftime('%b%d_%y') for date in dates]
colors = ['Darkred', 'Orange', 'Navy']
output_notebook()
TOOLS = ['hover','pan','box_zoom','resize', 'save', 'reset']
# CREATE FIGURE
p = figure(width = 800, height = 600, tools = TOOLS)
cnum = 0
# PLOT
for sym in Symbols:
# plot stock closing price
p.line(range(len(dates)), data[data.Symbol==sym].Previous_Close, color = colors[cnum])
# add stock symbol as text label to end of line
p.text(len(Symbols), data[data.Symbol==sym].Previous_Close.iloc[-1], [sym],
text_color = colors[cnum], text_font_size = '10pt')
cnum +=1
show(p)
明明是这里编的数据,但是思路是一样的。我想要的只是将 x 刻度标签设置为格式化的日期名称。在 Pyplot 中我会这样做:
ax.set_xticklables(format_dates)
axis()
我已经尝试将 x_axis_type 设置为 'datetime' 但这只会给我毫秒数。我试过使用 DateTimeFormatter() 但要么我不明白如何使用它,要么它不工作(可能是前者)。
我尝试过的事情(重新回答):
这会将 x 轴更改为毫秒: p = 图(宽度 = 800,高度 = 600,x_axis_type='datetime',工具 = 工具)
cnum = 0
# PLOT
for sym in Symbols:
# NO CHANGE TO X ARG
p.line(range(len(dates)), data[data.Symbol==sym].Previous_Close, color = colors[cnum])
这会将 x 刻度更改为从 1970 年开始的几十年: p = 图(宽度 = 800,高度 = 600,x_axis_type='datetime',工具 = 工具)
cnum = 0
# PLOT
for sym in Symbols:
# CHANGE X ARG TO DATETIME DATES
p.line(dates, data[data.Symbol==sym].Previous_Close, color = colors[cnum])
使用:
p = figure(width = 800, height = 600, x_axis_type='datetime', tools = TOOLS)
您的 pandas 索引似乎出了问题。我认为这段代码应该有效:
import numpy as np
import pandas as pd
from bokeh.plotting import figure, output_file, show
data = pd.DataFrame({'Symbol' : ['AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD','AMBA','FB','WWD',],
'Previous_Close' : [10,20,30,10,20,30,10,20,30,10,20,30,10,20,30,10,20,30,],
'Date' : pd.to_datetime(['01/01/16', '01/01/16', '01/01/16', '01/02/16', '01/02/16', '01/02/16', '01/03/16', '01/03/16', '01/03/16', '01/04/16', '01/04/16', '01/04/16', '01/05/16', '01/05/16', '01/05/16', '01/06/16', '01/06/16', '01/06/16'], format = '%m/%d/%y')})
symbols = [sym for sym in data.Symbol.unique()]
dates = [date for date in data.Date.unique()]
dates.sort()
lastDate = dates[-1]
colors = ['Darkred', 'Orange', 'Navy']
output_notebook()
TOOLS = ['hover','pan','box_zoom','resize', 'save', 'reset']
# CREATE FIGURE
p = figure(width = 800, height = 600, tools = TOOLS, x_axis_type="datetime")
# PLOT
for cnum, sym in enumerate(symbols):
# plot stock closing price
p.line(data[data.Symbol==sym].Date.values, data[data.Symbol==sym].Previous_Close.values, color = colors[cnum])
p.text(data[data.Date==lastDate].Date.values, data[data.Date==lastDate].Previous_Close.values, data[data.Date==lastDate].Symbol.values, text_color = colors, text_font_size = '10pt')
show(p)
这是输出的样子: