在Python中使用Altair进行数据可视化d

在之前的文章中,我已经介绍了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()
HighLowOpenCloseVolumeAdj Close
Date
2015-10-1244.59999843.05400144.59800043.11600119181500.043.116001
2015-10-1344.50400242.22600242.65599843.84999825857500.043.849998
2015-10-1444.18999943.08599944.13399943.37599915522000.043.375999
2015-10-1544.34600142.74000243.28599944.26200114221000.044.262001
2015-10-1646.09600144.57400144.60800245.40200021672500.045.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可视化卡车库存的有效前沿。

Leave a Reply

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据