Files
gaokao/pyecharts图表.ipynb
T
512song ad0d0a5396 jupyterlab
jupyterlab项目
2021-03-07 19:16:41 +08:00

579 lines
20 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"import pymysql\n",
"import pyecharts\n",
"from datetime import datetime\n",
"\n",
"db = pymysql.connect(\"localhost\",\"songyi\",\"yylzs\",\"mydata\" )\n",
"cursor = db.cursor()\n",
"item_id =1\n",
"per_id = 1\n",
"list_date = []\n",
"dict_tar = {}\n",
"dict_det = {}\n",
"dict_date = {}\n",
"## 获取项目信息\n",
"sql = \"select a.id,a.name,a.unit from sports_target as a,sports_item_target as b where b.item_id =%s and a.id =b.target_id\"\n",
"cursor.execute(sql, (item_id))\n",
"results = cursor.fetchall()\n",
"for result in results:\n",
" dict_tar[result[0]] = [result[1],result[2]]\n",
"## 获取运动记录信息\n",
"sql = \"select id,re_date from sports_record where item_id =%s and person_id =%s\"\n",
"cursor.execute(sql, (item_id,per_id))\n",
"results = cursor.fetchall()\n",
"for result in results:\n",
" list_date.append(result[0])\n",
" dict_date[result[0]] = result[1].strftime(\"%Y-%m-%d\")\n",
"s_date = '' \n",
"sql = \"select rec_id_id,target_id_id,value from sports_detail where rec_id_id in {}\".format(tuple(list_date))\n",
"cursor.execute(sql)\n",
"results = cursor.fetchall()\n",
"for s in list_date:\n",
" dict_det[dict_date[s]] = {}\n",
"for result in results:\n",
" s = result[0]\n",
" dict_det[dict_date[s]][result[1]] = result[2]\n",
"#print(dict_det)\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#柱状、曲线组合\n",
"from pyecharts.globals import CurrentConfig, NotebookType\n",
"CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB\n",
"from pyecharts import options as opts\n",
"from pyecharts.charts import Bar,Line\n",
"import pyecharts.options as opts\n",
"x_data = []\n",
"y_data1 = []\n",
"y_data2 = []\n",
"y_data3 = []\n",
"for key,value in dict_det.items():\n",
" x_data.append(key)\n",
" y_data1.append(value[8])\n",
" y_data2.append(value[9])\n",
" y_data3.append(value[2])\n",
"bar = (\n",
" Bar()\n",
" .add_xaxis(x_data)\n",
" .add_yaxis(\"平均心率\", y_data1,label_opts=opts.LabelOpts(is_show=False),gap=\"0%\")\n",
" .add_yaxis(\"最大心率\", y_data2,label_opts=opts.LabelOpts(is_show=False),gap=\"0%\") \n",
" .extend_axis(\n",
" yaxis=opts.AxisOpts(\n",
" name=\"运动时间\",\n",
" type_=\"value\",\n",
" min_=min(y_data3),\n",
" max_=max(y_data3),\n",
" interval=int((max(y_data3)-min(y_data3))/4),\n",
" axislabel_opts=opts.LabelOpts(formatter=\"{value} 分\"),\n",
" )\n",
" )\n",
" .set_global_opts(\n",
" tooltip_opts=opts.TooltipOpts(\n",
" is_show=True, trigger=\"axis\", axis_pointer_type=\"cross\"\n",
" ),\n",
" xaxis_opts=opts.AxisOpts(\n",
" type_=\"category\",\n",
" axispointer_opts=opts.AxisPointerOpts(is_show=True, type_=\"shadow\"),\n",
" ),\n",
" yaxis_opts=opts.AxisOpts(\n",
" name=\"心率\",\n",
" type_=\"value\",\n",
" min_=100,\n",
" max_=180,\n",
" interval=20,\n",
" axislabel_opts=opts.LabelOpts(formatter=\"{value} 次/分钟\"),\n",
" axistick_opts=opts.AxisTickOpts(is_show=True),\n",
" splitline_opts=opts.SplitLineOpts(is_show=True),\n",
" ),\n",
" )\n",
" .set_global_opts(title_opts=opts.TitleOpts(title=\"运动心率\", subtitle=\"户外运动\"),)\n",
")\n",
"line = (\n",
" Line()\n",
" .add_xaxis(xaxis_data=x_data)\n",
" .add_yaxis(\n",
" series_name=\"运动时间\",\n",
" yaxis_index=1,\n",
" y_axis=y_data3,\n",
" label_opts=opts.LabelOpts(is_show=False),\n",
" )\n",
")\n",
"\n",
"bar.overlap(line).load_javascript()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"bar.overlap(line).render_notebook()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#Grid - Grid_vertical多图组合\n",
"from pyecharts.globals import CurrentConfig, NotebookType\n",
"CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB\n",
"from pyecharts import options as opts\n",
"from pyecharts.charts import Bar, Grid\n",
"import pyecharts.options as opts\n",
"\n",
"x_data = []\n",
"y_data1 = []\n",
"y_data2 = []\n",
"y_data3 = []\n",
"y_data4 = []\n",
"for key,value in dict_det.items():\n",
" x_data.append(key)\n",
" y_data1.append(value[8])\n",
" y_data2.append(value[9])\n",
" y_data3.append(value[6])\n",
" y_data4.append(value[5])\n",
"bar1 = (\n",
" Bar()\n",
" .add_xaxis(x_data)\n",
" .add_yaxis(\"平均心率\", y_data1,label_opts=opts.LabelOpts(is_show=False),gap=\"0%\")\n",
" .add_yaxis(\"最大心率\", y_data2,label_opts=opts.LabelOpts(is_show=False),gap=\"0%\") \n",
" .set_global_opts(\n",
" tooltip_opts=opts.TooltipOpts(\n",
" is_show=True, trigger=\"axis\", axis_pointer_type=\"cross\"\n",
" ),\n",
" xaxis_opts=opts.AxisOpts(\n",
" type_=\"category\",\n",
" axispointer_opts=opts.AxisPointerOpts(is_show=True, type_=\"shadow\"),\n",
" ),\n",
" yaxis_opts=opts.AxisOpts(\n",
" name=\"心率\",\n",
" type_=\"value\",\n",
" min_=100,\n",
" max_=180,\n",
" interval=20,\n",
" axislabel_opts=opts.LabelOpts(formatter=\"{value} 次/分钟\"),\n",
" axistick_opts=opts.AxisTickOpts(is_show=True),\n",
" splitline_opts=opts.SplitLineOpts(is_show=True),\n",
" ),\n",
" )\n",
" .set_global_opts(title_opts=opts.TitleOpts(title=\"运动心率\", subtitle=\"户外运动\"),)\n",
")\n",
"bar2 = (\n",
" Bar()\n",
" .add_xaxis(x_data)\n",
" .add_yaxis(\"平均步幅\", y_data3,label_opts=opts.LabelOpts(is_show=False),gap=\"0%\")\n",
" .add_yaxis(\"平均步频\", y_data4,label_opts=opts.LabelOpts(is_show=False),gap=\"0%\") \n",
" .set_global_opts(\n",
" tooltip_opts=opts.TooltipOpts(\n",
" is_show=True, trigger=\"axis\", axis_pointer_type=\"cross\"\n",
" ),\n",
" xaxis_opts=opts.AxisOpts(\n",
" type_=\"category\",\n",
" axispointer_opts=opts.AxisPointerOpts(is_show=True, type_=\"shadow\"),\n",
" ),\n",
" yaxis_opts=opts.AxisOpts(\n",
" name=\"心率\",\n",
" type_=\"value\",\n",
" min_=40,\n",
" max_=180,\n",
" interval=20,\n",
" axislabel_opts=opts.LabelOpts(formatter=\"{value} \"),\n",
" axistick_opts=opts.AxisTickOpts(is_show=True),\n",
" splitline_opts=opts.SplitLineOpts(is_show=True),\n",
" ),\n",
" )\n",
" .set_global_opts(\n",
" title_opts=opts.TitleOpts(title=\"运动步频\", pos_top=\"48%\"),\n",
" legend_opts=opts.LegendOpts(pos_top=\"48%\"),\n",
" )\n",
")\n",
"grid = (\n",
" Grid()\n",
" .add(bar1, grid_opts=opts.GridOpts(pos_bottom=\"60%\"))\n",
" .add(bar2, grid_opts=opts.GridOpts(pos_top=\"60%\"))\n",
" \n",
")\n",
"grid.load_javascript()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"grid.render_notebook()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"new Promise(function(resolve, reject) {\n",
" var script = document.createElement(\"script\");\n",
" script.onload = resolve;\n",
" script.onerror = reject;\n",
" script.src = \"https://assets.pyecharts.org/assets/echarts.min.js\";\n",
" document.head.appendChild(script);\n",
"}).then(() => {\n",
"\n",
"});"
],
"text/plain": [
"<pyecharts.render.display.Javascript at 0x7fc0c5da81f0>"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from pyecharts import options as opts\n",
"from pyecharts.globals import CurrentConfig, NotebookType\n",
"CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB\n",
"from pyecharts.charts import Bar\n",
"from pyecharts.globals import ThemeType\n",
"from pyecharts.faker import Faker\n",
"c = (\n",
" Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))\n",
" # 等价于 Bar(init_opts=opts.InitOpts(theme=ThemeType.WHITE))\n",
" .add_xaxis(Faker.choose())\n",
" .add_yaxis(\"商家A\", Faker.values())\n",
" .add_yaxis(\"商家B\", Faker.values())\n",
" .add_yaxis(\"商家C\", Faker.values())\n",
" .add_yaxis(\"商家D\", Faker.values())\n",
" .set_global_opts(title_opts=opts.TitleOpts(\"Theme-default\"))\n",
" )\n",
"c.load_javascript()"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<!DOCTYPE html>\n",
"<html>\n",
"<head>\n",
" <meta charset=\"UTF-8\">\n",
"</head>\n",
"<body>\n",
" <div id=\"d0daab07c02a46259dfdf1bc28f2125e\" class=\"chart-container\" style=\"width:900px; height:500px;\"></div>\n",
" <script>\n",
" var chart_d0daab07c02a46259dfdf1bc28f2125e = echarts.init(\n",
" document.getElementById('d0daab07c02a46259dfdf1bc28f2125e'), 'vintage', {renderer: 'canvas'});\n",
" var option_d0daab07c02a46259dfdf1bc28f2125e = {\n",
" \"animation\": true,\n",
" \"animationThreshold\": 2000,\n",
" \"animationDuration\": 1000,\n",
" \"animationEasing\": \"cubicOut\",\n",
" \"animationDelay\": 0,\n",
" \"animationDurationUpdate\": 300,\n",
" \"animationEasingUpdate\": \"cubicOut\",\n",
" \"animationDelayUpdate\": 0,\n",
" \"series\": [\n",
" {\n",
" \"type\": \"bar\",\n",
" \"name\": \"\\u5546\\u5bb6A\",\n",
" \"legendHoverLink\": true,\n",
" \"data\": [\n",
" 82,\n",
" 82,\n",
" 31,\n",
" 51,\n",
" 91,\n",
" 108,\n",
" 87\n",
" ],\n",
" \"showBackground\": false,\n",
" \"barMinHeight\": 0,\n",
" \"barCategoryGap\": \"20%\",\n",
" \"barGap\": \"30%\",\n",
" \"large\": false,\n",
" \"largeThreshold\": 400,\n",
" \"seriesLayoutBy\": \"column\",\n",
" \"datasetIndex\": 0,\n",
" \"clip\": true,\n",
" \"zlevel\": 0,\n",
" \"z\": 2,\n",
" \"label\": {\n",
" \"show\": true,\n",
" \"position\": \"top\",\n",
" \"margin\": 8\n",
" }\n",
" },\n",
" {\n",
" \"type\": \"bar\",\n",
" \"name\": \"\\u5546\\u5bb6B\",\n",
" \"legendHoverLink\": true,\n",
" \"data\": [\n",
" 85,\n",
" 118,\n",
" 139,\n",
" 133,\n",
" 132,\n",
" 116,\n",
" 35\n",
" ],\n",
" \"showBackground\": false,\n",
" \"barMinHeight\": 0,\n",
" \"barCategoryGap\": \"20%\",\n",
" \"barGap\": \"30%\",\n",
" \"large\": false,\n",
" \"largeThreshold\": 400,\n",
" \"seriesLayoutBy\": \"column\",\n",
" \"datasetIndex\": 0,\n",
" \"clip\": true,\n",
" \"zlevel\": 0,\n",
" \"z\": 2,\n",
" \"label\": {\n",
" \"show\": true,\n",
" \"position\": \"top\",\n",
" \"margin\": 8\n",
" }\n",
" },\n",
" {\n",
" \"type\": \"bar\",\n",
" \"name\": \"\\u5546\\u5bb6C\",\n",
" \"legendHoverLink\": true,\n",
" \"data\": [\n",
" 119,\n",
" 46,\n",
" 149,\n",
" 83,\n",
" 111,\n",
" 108,\n",
" 72\n",
" ],\n",
" \"showBackground\": false,\n",
" \"barMinHeight\": 0,\n",
" \"barCategoryGap\": \"20%\",\n",
" \"barGap\": \"30%\",\n",
" \"large\": false,\n",
" \"largeThreshold\": 400,\n",
" \"seriesLayoutBy\": \"column\",\n",
" \"datasetIndex\": 0,\n",
" \"clip\": true,\n",
" \"zlevel\": 0,\n",
" \"z\": 2,\n",
" \"label\": {\n",
" \"show\": true,\n",
" \"position\": \"top\",\n",
" \"margin\": 8\n",
" }\n",
" },\n",
" {\n",
" \"type\": \"bar\",\n",
" \"name\": \"\\u5546\\u5bb6D\",\n",
" \"legendHoverLink\": true,\n",
" \"data\": [\n",
" 60,\n",
" 80,\n",
" 106,\n",
" 68,\n",
" 54,\n",
" 57,\n",
" 92\n",
" ],\n",
" \"showBackground\": false,\n",
" \"barMinHeight\": 0,\n",
" \"barCategoryGap\": \"20%\",\n",
" \"barGap\": \"30%\",\n",
" \"large\": false,\n",
" \"largeThreshold\": 400,\n",
" \"seriesLayoutBy\": \"column\",\n",
" \"datasetIndex\": 0,\n",
" \"clip\": true,\n",
" \"zlevel\": 0,\n",
" \"z\": 2,\n",
" \"label\": {\n",
" \"show\": true,\n",
" \"position\": \"top\",\n",
" \"margin\": 8\n",
" }\n",
" }\n",
" ],\n",
" \"legend\": [\n",
" {\n",
" \"data\": [\n",
" \"\\u5546\\u5bb6A\",\n",
" \"\\u5546\\u5bb6B\",\n",
" \"\\u5546\\u5bb6C\",\n",
" \"\\u5546\\u5bb6D\"\n",
" ],\n",
" \"selected\": {\n",
" \"\\u5546\\u5bb6A\": true,\n",
" \"\\u5546\\u5bb6B\": true,\n",
" \"\\u5546\\u5bb6C\": true,\n",
" \"\\u5546\\u5bb6D\": true\n",
" },\n",
" \"show\": true,\n",
" \"padding\": 5,\n",
" \"itemGap\": 10,\n",
" \"itemWidth\": 25,\n",
" \"itemHeight\": 14\n",
" }\n",
" ],\n",
" \"tooltip\": {\n",
" \"show\": true,\n",
" \"trigger\": \"item\",\n",
" \"triggerOn\": \"mousemove|click\",\n",
" \"axisPointer\": {\n",
" \"type\": \"line\"\n",
" },\n",
" \"showContent\": true,\n",
" \"alwaysShowContent\": false,\n",
" \"showDelay\": 0,\n",
" \"hideDelay\": 100,\n",
" \"textStyle\": {\n",
" \"fontSize\": 14\n",
" },\n",
" \"borderWidth\": 0,\n",
" \"padding\": 5\n",
" },\n",
" \"xAxis\": [\n",
" {\n",
" \"show\": true,\n",
" \"scale\": false,\n",
" \"nameLocation\": \"end\",\n",
" \"nameGap\": 15,\n",
" \"gridIndex\": 0,\n",
" \"inverse\": false,\n",
" \"offset\": 0,\n",
" \"splitNumber\": 5,\n",
" \"minInterval\": 0,\n",
" \"splitLine\": {\n",
" \"show\": false,\n",
" \"lineStyle\": {\n",
" \"show\": true,\n",
" \"width\": 1,\n",
" \"opacity\": 1,\n",
" \"curveness\": 0,\n",
" \"type\": \"solid\"\n",
" }\n",
" },\n",
" \"data\": [\n",
" \"\\u886c\\u886b\",\n",
" \"\\u6bdb\\u8863\",\n",
" \"\\u9886\\u5e26\",\n",
" \"\\u88e4\\u5b50\",\n",
" \"\\u98ce\\u8863\",\n",
" \"\\u9ad8\\u8ddf\\u978b\",\n",
" \"\\u889c\\u5b50\"\n",
" ]\n",
" }\n",
" ],\n",
" \"yAxis\": [\n",
" {\n",
" \"show\": true,\n",
" \"scale\": false,\n",
" \"nameLocation\": \"end\",\n",
" \"nameGap\": 15,\n",
" \"gridIndex\": 0,\n",
" \"inverse\": false,\n",
" \"offset\": 0,\n",
" \"splitNumber\": 5,\n",
" \"minInterval\": 0,\n",
" \"splitLine\": {\n",
" \"show\": false,\n",
" \"lineStyle\": {\n",
" \"show\": true,\n",
" \"width\": 1,\n",
" \"opacity\": 1,\n",
" \"curveness\": 0,\n",
" \"type\": \"solid\"\n",
" }\n",
" }\n",
" }\n",
" ],\n",
" \"title\": [\n",
" {\n",
" \"text\": \"Theme-default\",\n",
" \"padding\": 5,\n",
" \"itemGap\": 10\n",
" }\n",
" ]\n",
"};\n",
" chart_d0daab07c02a46259dfdf1bc28f2125e.setOption(option_d0daab07c02a46259dfdf1bc28f2125e);\n",
" </script>\n",
"</body>\n",
"</html>\n"
],
"text/plain": [
"<pyecharts.render.display.HTML at 0x7fc0c5e35c10>"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c.render_notebook()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}