- Plotly教程
- 阴谋 - 主页
- Plotly - 简介
- Plotly - 环境设置
- Plotly - 在线和离线绘图
- 使用 Jupyter Notebook 内联绘图
- Plotly - 包结构
- Plotly - 导出到静态图像
- Plotly - 传奇
- Plotly - 设置轴和刻度的格式
- Plotly - 子图和插图
- Plotly - 条形图和饼图
- Plotly - 散点图、Scattergl 图和气泡图
- Plotly - 点图和表格
- Plotly - 直方图
- Plotly - 箱线图小提琴图和等高线图
- Plotly - 分布图、密度图和误差条图
- Plotly - 热图
- Plotly - 极坐标图和雷达图
- Plotly - OHLC 图表瀑布图和漏斗图
- Plotly - 3D 散点图和曲面图
- Plotly - 添加按钮/下拉菜单
- Plotly - 滑块控制
- Plotly -FigureWidget 类
- 与pandas和袖扣密谋
- 使用 Matplotlib 和 Chart Studio 绘图
- 非常有用的资源
- Plotly - 快速指南
- Plotly - 有用的资源
- Plotly - 讨论
与pandas和袖扣密谋
Pandas 是 Python 中一个非常流行的数据分析库。它还具有自己的绘图功能支持。然而,Pandas 绘图不提供可视化交互性。值得庆幸的是,plotly 的交互式和动态绘图可以使用Pandas 数据框对象构建。
我们首先从简单的列表对象构建一个数据框。
data = [['Ravi',21,67],['Kiran',24,61],['Anita',18,46],['Smita',20,78],['Sunil',17,90]] df = pd.DataFrame(data,columns = ['name','age','marks'],dtype = float)
数据框列用作图形对象轨迹的x和y属性的数据值。在这里,我们将使用名称和标记列生成条形跟踪。
trace = go.Bar(x = df.name, y = df.marks) fig = go.Figure(data = [trace]) iplot(fig)
Jupyter 笔记本中将显示一个简单的条形图,如下所示 -
Plotly 构建在d3.js之上,是一个专门的图表库,可以使用另一个名为Cufflinks的库直接与Pandas 数据框一起使用。
如果尚未可用,请使用您最喜欢的包管理器(如pip)安装 cufflinks 包,如下所示 -
pip install cufflinks or conda install -c conda-forge cufflinks-py
首先,导入袖扣以及其他库(例如Pandas和numpy),这些库可以将其配置为离线使用。
import cufflinks as cf cf.go_offline()
现在,您可以直接使用Pandas dataframe来显示各种类型的绘图,而无需像我们之前那样使用graph_objs 模块中的 Trace 和figure 对象。
df.iplot(kind = 'bar', x = 'name', y = 'marks')
条形图与之前的条形图非常相似,将显示如下 -
来自数据库的 Pandas 数据框
它可以由不同类型数据库中的数据填充,而不是使用 Python 列表来构建数据框。例如,来自 CSV 文件、SQLite 数据库表或 mysql 数据库表的数据可以提取到 Pandas 数据框中,最终使用Figure 对象或Cufflinks 接口绘制图表。
要从CSV 文件中获取数据,我们可以使用Pandas 库中的read_csv()函数。
import pandas as pd df = pd.read_csv('sample-data.csv')
如果SQLite 数据库表中存在数据,则可以使用SQLAlchemy 库检索数据,如下所示 -
import pandas as pd from sqlalchemy import create_engine disk_engine = create_engine('sqlite:///mydb.db') df = pd.read_sql_query('SELECT name,age,marks', disk_engine)
另一方面,来自MySQL 数据库的数据在 Pandas 数据框中检索,如下所示 -
import pymysql import pandas as pd conn = pymysql.connect(host = "localhost", user = "root", passwd = "xxxx", db = "mydb") cursor = conn.cursor() cursor.execute('select name,age,marks') rows = cursor.fetchall() df = pd.DataFrame( [[ij for ij in i] for i in rows] ) df.rename(columns = {0: 'Name', 1: 'age', 2: 'marks'}, inplace = True)