台州做网站软件,网站建设平台对比,备案查询站长之家,专业国外网站建设文章目录 数据介绍Matplotlib散点图折线图柱形图直方图 Seaborn散点图折线图柱形图直方图 Bokeh散点图折线条形图交互式 Plotly基本组合优化#xff1a;定制化下拉菜单 总结 数据介绍
在这个小费数据集中#xff0c;我们记录了20世纪90年代初期餐厅顾客在两个半月内给出的小… 文章目录 数据介绍Matplotlib散点图折线图柱形图直方图 Seaborn散点图折线图柱形图直方图 Bokeh散点图折线条形图交互式 Plotly基本组合优化定制化下拉菜单 总结 数据介绍
在这个小费数据集中我们记录了20世纪90年代初期餐厅顾客在两个半月内给出的小费情况。数据集包含了total_bill总账单金额、tip小费金额、sex性别、smoker是否吸烟、day就餐日期、time就餐时间、size就餐人数等六列信息。
数据下载
链接: https://pan.baidu.com/s/1gnxI3CM7EVqCAzAGCbtSrg 提取码: 7it9 读取数据
import pandas as pd# 读取数据
data pd.read_csv(tips.csv)# 展示前10行
display(data.head(10))如下所示
Matplotlib
Matplotlib是一个强大而灵活的低级数据可视化库它建立在NumPy数组上。它提供了各种图形如散点图、折线图、柱形图等。
要安装Matplotlib可以使用以下命令
pip install matplotlib散点图
散点图用于观察变量之间的关系可以使用Matplotlib的scatter()方法进行绘制。
import pandas as pd
import matplotlib.pyplot as plt# 数据
data pd.read_csv(tips.csv)# 绘制天和小票关系
plt.scatter(data[day], data[tip])# 添加标题
plt.title(Scatter Plot)# 添加横纵坐标
plt.xlabel(Day)
plt.ylabel(Tip)plt.show()如下所示
如果想要增添颜色和调整点的大小可以通过scatter()函数的c和s参数来实现。此外colorbar()方法可用于显示颜色条。
折线图
折线图用于表示两个变量在不同轴上的关系使用Matplotlib的plot()函数进行绘制。
import pandas as pd
import matplotlib.pyplot as plt# 读取数据
data pd.read_csv(tips.csv)# 绘制小票和大小关系
plt.plot(data[tip])
plt.plot(data[size])#添加标题
plt.title(Scatter Plot)# 添加横纵坐标
plt.xlabel(Day)
plt.ylabel(Tip)plt.show()如下
柱形图
柱形图用于以矩形条的长度和高度表示数据类别。可以使用Matplotlib的bar()方法创建柱形图。 import pandas as pd
import matplotlib.pyplot as pltdata pd.read_csv(tips.csv)plt.bar(data[day], data[tip])plt.title(Bar Chart)plt.xlabel(Day)
plt.ylabel(Tip)# Adding the legends
plt.show()如下
直方图
直方图用于以组的形式表示数据可以使用Matplotlib的hist()函数进行绘制。
import pandas as pd
import matplotlib.pyplot as pltdata pd.read_csv(tips.csv)
plt.hist(data[total_bill])plt.title(Histogram)
plt.show()如下
Seaborn
Seaborn是建立在Matplotlib之上的高级接口提供了漂亮的设计风格和调色板使得绘制更具吸引力的图表变得简单。
要安装Seaborn可以使用以下命令
pip install seabornSeaborn的scatterplot()方法用于绘制散点图。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata pd.read_csv(tips.csv)# 绘制天和小费关系的散点图
sns.scatterplot(xday, ytip, datadata)plt.show()
如下
散点图
与Matplotlib不同的是在Seaborn中使用hue参数可以轻松地按性别对每个点进行着色。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata pd.read_csv(tips.csv)# 根据性别绘制天和小费关系的散点图
sns.scatterplot(xday, ytip, datadata, huesex)plt.show()
如下 你会发现在使用 Matplotlib 时如果你想根据性别给这个图的每个点着色那会很困难。但是在散点图中它可以在色调参数的帮助下完成。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata pd.read_csv(tips.csv)sns.scatterplot(xday, ytip, datadata,huesex)
plt.show()如下
折线图
Seaborn的lineplot()方法用于绘制折线图。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata pd.read_csv(tips.csv)sns.lineplot(xday, ytip, datadata)
plt.show()如下
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata pd.read_csv(tips.csv)# 去除一个总额度列再绘制
sns.lineplot(datadata.drop([total_bill], axis1))
plt.show()如下
柱形图
Seaborn的barplot()方法用于绘制柱形图。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata pd.read_csv(tips.csv)sns.barplot(xday,ytip, datadata, huesex)plt.show()如下
直方图
Seaborn 中的直方图可以使用 histplot 函数绘制。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata pd.read_csv(tips.csv)sns.histplot(xtotal_bill, datadata, kdeTrue, huesex)plt.show()如下 在使用Seaborn时相比于Matplotlib我们可以更轻松地自定义图表。而且Seaborn是基于Matplotlib构建的因此在使用Seaborn时仍然可以利用Matplotlib的自定义函数。
Bokeh
Bokeh以其交互式图表而著称使用HTML和JavaScript渲染图形提供了优雅、简洁且高度交互性的现代图形。
要安装Bokeh可以使用以下命令
pip install bokeh散点图
Bokeh的scatter()方法用于绘制散点图。
from bokeh.plotting import figure, output_file, show
from bokeh.palettes import magma
import pandas as pd#初始化
graph figure(title Bokeh Scatter Graph)# 读取
data pd.read_csv(tips.csv)color magma(256)# 绘制
graph.scatter(data[total_bill], data[tip], colorcolor)# 显示
show(graph)如下
折线
from bokeh.plotting import figure, output_file, show
import pandas as pdgraph figure(title Bokeh Bar Chart)data pd.read_csv(tips.csv)# tip column
df data[tip].value_counts()# 绘制
graph.line(df, data[tip])#展示
show(graph)如下
条形图
Bokeh中的条形图可以使用vbar()方法创建。
from bokeh.plotting import figure, output_file, show
import pandas as pdgraph figure(title Bokeh Bar Chart)data pd.read_csv(tips.csv)graph.vbar(data[total_bill], topdata[tip])show(graph)如下
交互式
Bokeh提供了交互式图表的功能可以使用GUI元素如按钮、滑块、复选框等。
from bokeh.plotting import figure, output_file, show
import pandas as pd# 初始化
graph figure(title Bokeh Bar Chart)# 数据读取
data pd.read_csv(tips.csv)# 绘制
graph.vbar(data[total_bill], topdata[tip], legend_label Bill VS Tips, colorgreen)graph.vbar(data[tip], topdata[size], legend_label Tips VS Size, colorred)graph.legend.click_policy hide# 展示
show(graph)如下: 例如
from bokeh.io import show
from bokeh.models import CustomJS, Sliderslider Slider(start1, end20, value1, step2, titleSlider)slider.js_on_change(value, CustomJS(codeconsole.log(slider: value this.value, this.toString())
))show(slider)如下
Plotly
Plotly是一个交互式可视化库提供基于Web的图表可以用于创建漂亮的图表和仪表板。
要安装Plotly可以使用以下命令
pip install plotly基本
使用Plotly Express库中的scatter()方法绘制散点图。 import plotly.express as px
import pandas as pddata pd.read_csv(tips.csv)fig px.scatter(data, xday, ytip, colorsex)# showing the plot
fig.show()如下 使用Plotly Express库中的line()方法绘制折线图。
import plotly.express as px
import pandas as pddata pd.read_csv(tips.csv)fig px.line(data, ytip, colorsex)fig.show()如下 使用Plotly Express库中的bar()方法绘制柱形图。
import plotly.express as px
import pandas as pddata pd.read_csv(tips.csv)fig px.bar(data, xday, ytip, colorsex)fig.show()如下 使用Plotly Express库中的histogram()方法绘制直方图。 import plotly.express as px
import pandas as pd# reading the database
data pd.read_csv(tips.csv)# plotting the scatter chart
fig px.histogram(data, xtotal_bill, colorsex)# showing the plot
fig.show()如下
组合优化定制化下拉菜单
在数据可视化中展示图表不仅需要清晰的数据呈现还需要用户友好的交互体验。本文将介绍如何通过使用 Plotly 中的 updatemenus 功能为图表添加定制化下拉菜单让用户能够灵活切换图表类型。
# 导入必要的库
import plotly.graph_objects as go
import pandas as pd# 读取数据
data pd.read_csv(tips.csv)# 创建初始散点图
plot go.Figure(data[go.Scatter(xdata[day],ydata[tip],modemarkers,)
])# 定义下拉菜单选项
menu_options [dict(args[type, scatter],label散点图,methodrestyle),dict(args[type, bar],label柱状图,methodrestyle)
]# 添加下拉菜单
plot.update_layout(updatemenus[dict(buttonsmenu_options,directiondown,),]
)# 展示图表
plot.show()
如下所示 通过这个简单的示例你可以在图表上方看到一个下拉菜单用于在散点图和柱状图之间切换。这种交互方式使得用户能够更直观地探索数据。
同样地我们可以应用相同的思想来优化时间序列数据的展示
# 创建初始折线图
plot go.Figure(data[go.Scatter(ydata[tip],modelines,)
])# 定义时间序列下拉菜单选项
time_menu_options [dict(count1,stepday,stepmodebackward)
]# 更新布局添加时间序列下拉菜单
plot.update_layout(xaxisdict(rangeselectordict(buttonstime_menu_options),rangesliderdict(visibleTrue),)
)# 展示图表
plot.show()
如下 这样你就能够以更有层次感的方式呈现时间序列数据。
总结
通过本文学习你不仅了解了如何使用 Python 中不同的绘图库Matplotlib、Seaborn、Bokeh 和 Plotly来展示提示数据集还掌握了如何通过 Plotly 的交互功能为图表添加个性化的下拉菜单。每个绘图库都有其独特的优势根据任务需求选择合适的库既能提高效率又能提供更好的用户体验。希望你在数据可视化的旅程中能够更得心应手