在之前的文章中,我已经介绍了seaborn和matplotlib.pyplot用于Python的可视化。在这篇文章中,我想介绍altair模块。这是支持Python中可视化的替代模块。 可以在命令提示符下使用pip install来安装altair模块。 在下面,我将altair模块以及pandas和pandas_datareader导入。我将使用pandas_datareader读取特斯拉的股价数据。我将使用在altair中创建的图表来可视化股价走势。但是首先我从Yahoo Finance查询数据并显示检索到的数据框的标题:
#导入相关模块 import pandas as pd import altair as alt import pandas_datareader.data as web import datetime #读取特斯拉过去5年的股价数据 start = datetime.datetime(2015,10,11) end = datetime.datetime(2020,10,11) df = web.DataReader("TSLA","yahoo",start,end) #显示股价数据框的标题 df.head()
High | Low | Open | Close | Volume | Adj Close | |
---|---|---|---|---|---|---|
Date | ||||||
2015-10-12 | 44.599998 | 43.054001 | 44.598000 | 43.116001 | 19181500.0 | 43.116001 |
2015-10-13 | 44.504002 | 42.226002 | 42.655998 | 43.849998 | 25857500.0 | 43.849998 |
2015-10-14 | 44.189999 | 43.085999 | 44.133999 | 43.375999 | 15522000.0 | 43.375999 |
2015-10-15 | 44.346001 | 42.740002 | 43.285999 | 44.262001 | 14221000.0 | 44.262001 |
2015-10-16 | 46.096001 | 44.574001 | 44.608002 | 45.402000 | 21672500.0 | 45.402000 |
当前日期是数据框的行索引。为了使用altair,最好将它们添加为具有指定列标题的单独列:
df[“Dates”] = df.index
现在我有了数据,现在可以使用Python中的altair模块创建股价图表:
#用altair创建图表 chart = alt.Chart(df).mark_area().encode( x="Dates", y="Close" ) #显示高度图 chart
那是一个非常基本的图表。在下面,我创建另一个具有颜色渐变的面积图:
#创建高度图 chart = alt.Chart(df).mark_area(line={'color':'darkgreen'},color=alt.Gradient( gradient='linear', stops=[alt.GradientStop(color='white', offset=0), alt.GradientStop(color='darkgreen', offset=1)])).encode(x="Dates",y="Close") # display altair chart chart
我想向图表添加标题。我也想更改x和y轴标题。我在下面的代码中这样做:
#添加图表标题 chart.title = "Daily TSLA stock closing prices [USD]" #调整x和y轴标签 chart.encoding.x.title = "Time" chart.encoding.y.title = "Daily closing price [USD]" #显示修改后的图表 chart
现在让我们尝试制作一个烛台图。例如,可以使用烛台图解释股票分析。可以在这里找到:https://diagrammm.com/candlestick_chart
#创建颜色条件 color_conditions = alt.condition("datum.Open <= datum.Close", alt.value("green"), alt.value("red"))# build chart chart = alt.Chart(df).encode(x = "Dates") #设置图表标题 chart.title = "Candle-stick diagram of TSLA stock prices" #设置图表的x轴标签 chart.encoding.x.title = "Time" #使用mark_rule()方法构造一个规则标记 rules = chart.mark_rule().encode( y = "Low", y2 = "High") #调整规则的y轴标签 rules.encoding.y.title = "Price" #构建栏 bars = chart.mark_bar().encode( y="Open", y2="Close", color = color_conditions) #显示规则和条形图(均基于相同的基本图表 rules + bars
在上面的烛台图中,altair条已作为altair规则的第二层放置。 让我们使用特斯拉的股价数据创建更多的绘图示例。在下面的代码中,我为特斯拉每日收盘价创建了一个股价线图:
#创建线图 chart = alt.Chart(df).mark_line().encode(x="Dates",y="Close") #设置标题和轴标签 chart.title = "Daily TSLA stock closing prices" chart.encoding.x.title = "Time" chart.encoding.y.title = "Price [USD]" #显示线图 chart
创建图表时,我还可以指定一些其他属性,例如图表的宽度:
#创建颜色条件 color_conditions = alt.condition("datum.Open <= datum.Close", alt.value("green"), alt.value("red"))# build chart chart = alt.Chart(df).encode(x = "Dates").properties(width=800) #设置图表标题 chart.title = "Candle-stick diagram of TSLA stock prices" #设置图表的x轴标签 chart.encoding.x.title = "Time" #使用mark_rule()方法构造一个规则标记 rules = chart.mark_rule().encode( y = "Low", y2 = "High") #调整规则的y轴标签 rules.encoding.y.title = "Price" #构建栏 bars = chart.mark_bar().encode( y="Open", y2="Close", color = color_conditions) #显示规则和条形图 - 均基于相同的基本图表 rules + bars
这就完成了我对Python中的altair模块的基本介绍。有关更多信息,例如建议检查文档:https://altair-viz.github.io
您还可以查看我在Python和R中有关可视化的其他文章,例如使用R中的Leaflet进行空间数据可视化,使用Python中的Folium和Leaflet进行地理编码和热映射,以及使用R中的deckgl进行3D热映射。我还写了几本有关使用Seaborn和Matplotlib.pyplot进行数据可视化的教程。我通过将Markowitz投资组合理论与蒙特卡洛模拟相结合,使用Matplotlib可视化卡车库存的有效前沿。
专业领域为优化和仿真的工业工程师(R,Python,SQL,VBA)
Leave a Reply