可视化

D3.js绘制柱形图

<!DOCTYPE html>
 <html lang="en">
 <head>
    <title>bar example</title>
    <script src="d3.min.js"></script>
 </head>
 
<body>
 <div id="barchart"></div>
 <script>
    //定义数据
    var data = [
        {name: "外包", value: 10},
        {name: "金融", value: 20},
        {name: "制造", value: 30},
        {name: "咨询", value: 40}
    ];
 
    // 选择页面上id为'barchart'的元素,并在其中添加一个SVG元素
    var svg = d3.select("#barchart")
        .append("svg")
 
    // 创建一个带状比例尺,通常用于分类数据,比如条形图中的x轴
    var xScale = d3.scaleBand()
    // 创建一个线性比例尺,用于连续数据,比如条形图中的y轴
    var yScale = d3.scaleLinear()
 
    // 选择svg元素,使用data()方法绑定数据到选择集
    // 这里假设data是一个包含对象的数组,每个对象至少有两个属性:name和value
    svg.selectAll(".bar")
        .data(data) // 绑定数据到选择集
        .enter() // 进入数据绑定的上下文
        .append("rect") // 在每个数据点上添加一个矩形元素
        .attr("class","bar") // 设置矩形元素的类名为'bar'
        .attr("x", function(d) {return xScale(d.name);}) // 设置矩形的x坐标,基于xScale和数据点的name属性
        .attr("y", function(d) {return yScale(d.value);}) // 设置矩形的y坐标,基于yScale和数据点的value属性echarts的使用 
        .attr("width", xScale.bandwidth()) // 设置矩形的宽度,使用xScale的带宽
        .attr("height", function(d) {return height
        yScale(d.value);}); // 设置矩形的高度,计算方式是画布的高度减去yScale转换后的值
</script>
 </body>
 </html>

image

echarts的使用

title------------>标题
xAxis----------->直角坐标系 x 轴
yAxis----------->直角坐标系 y 轴
tooltip----------->提示框组件
legend--------->图例组件
series----------->用来定义一个数据集的特征、样式和其他信息,通过series属性的设置,可以让
Echarts可视化出你想要的样子,series属性可以用在折线图、柱状图、散点图、区域图、饼图等
多种可视化方式中

legend

图例组件展现了不同系列的标记,颜色和名字。可以通过点击图例控制哪些系列不显示。
ECharts 3 中单个 echarts 实例中可以存在多个图例组件,会方便多个图例的布局。
当图例数量过多时,可以使用垂直滚动图例水平滚动图例
image

series

series可以用来定义一个数据集的特征、样式和其他信息,通过series属性的设置,可以让Echarts可视
化出你想要的样子,series属性可以用在折线图、柱状图、散点图、区域图、饼图等多种可视化方式中
series属性包括type、name、data、symbolSize和markLine等信息。type属性可以用来指定可视化
的类型;name属性可以用来指定一个可视化数据集的名称;data属性可以用来指定数据集所包含的数
据;symbolySizes属性可以用来指定柱状图中柱子的宽度;markLine属性可以用来在图表中绘制一根
线,用来标注关键的数据点。
echarts 里系列类型(series.type)就是图表类型。系列类型(series.type)至少有:line(折
线图)、bar(柱状图)、pie(饼图)、scatter(散点图)、tree(树图)、map(地图)

xAxis:

image
image

折线图

 <!DOCTYPE html>
 <html>
    <head>
        <title>echarts基本使用</title>
        <meta charset="utf-8">
        <!-- 步骤1:引入echarts.js文件 -->
        <script src="echarts.min.js"></script>
    </head>
    <body>
        <!--步骤2:准备一个有大小的dom容器-->
        <div style="width: 500px; height: 500px;" id="bar_dom">
 </div>
        <script>
        //步骤3:初始化echarts
        var echarts_init = 
echarts.init(document.getElementById("bar_dom"))
        //步骤4:设置配置数据项
        var options = {
            title: {
                text:"test",//主标题文本,支持使用 \n 换行。
                subtext:'sub'//副标题文本,支持使用 \n 换行
            },
            tooltip: {
                trigger: "axis"//提示框组件
            },
            legend: {
                data:["图例1","图例2"],
		left:'center',//图例组件离容器左侧的距离。left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,也可以是 'left', 'center', 'right'。如果 left 的值为 'left', 'center', 'right',组件会根据相应的位置自动对齐。
            },
            xAxis: {
                name:'x轴',
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 
'Sun']
            },
            yAxis: {
                name:'y轴',
                type: 'value'
            },
            series:[{
                    name: "图例1",
                    data: [120, 200, 150, 80, 70, 110, 130],
                    type: 'line' 
                },
                {
                    name: "图例2",
                    data: [10, 20, 50, 80, 60, 10, 30],
                    type: 'line'
                }]
        }
        //步骤5:将设置好的配置项传给echarts
        echarts_init.setOption(options)
        </script>
    </body>
 </html>

image

饼图

<!DOCTYPE html>
 <html>
    <head>
        <title>echarts基本使用</title>
        <meta charset="utf-8">
        <!-- 步骤1:引入echarts.js文件 -->
        <script src="echarts.min.js"></script>
    </head>
    <body>
        <!--步骤2:准备一个有大小的dom容器-->
        <div style="width: 500px; height: 500px;" id="bar_dom">
 </div>
        <script>
        //步骤3:初始化echarts
        var echarts_init = 
echarts.init(document.getElementById("bar_dom"))
        //步骤4:设置配置数据项
        var options = {
            title: {
                text:"test",
                subtext:'sub'
            },
            tooltip: {
                trigger: "item"//就仅仅只是提示
            },
            legend: {
                data: ["Apple", "Grapes", "Pineapples"]
            },
             series: [{
                type: "pie",
                data: [
                    {value: 335,name: "Apple"},
                    {value: 310,name: "Grapes"},
                    {value: 234,name: "Pineapples"}
                ]
              }]
        }
        //步骤5:将设置好的配置项传给echarts
        echarts_init.setOption(options)
        </script>
    </body>
 </html>

image

环形图

<!DOCTYPE html>
 <html>
    <head>
        <title>echarts基本使用</title>
        <meta charset="utf-8">
        <!-- 步骤1:引入echarts.js文件 -->
        <script src="echarts.min.js"></script>
    </head>
    <body>
        <!--步骤2:准备一个有大小的dom容器-->
        <div style="width: 500px; height: 500px;" id="bar_dom">
 </div>
        <script>
        //步骤3:初始化echarts
        var echarts_init = 
echarts.init(document.getElementById("bar_dom"))
        //步骤4:设置配置数据项
        var options = {
            title: {
                text:"test",
                subtext:'sub'
            },
            tooltip: {
                trigger: "item"
            },
            legend: {
                data: ["Apple", "Grapes", "Pineapples"]
            },
             series: [{
                type: "pie",
                radius: ['40%', '70%'],
                     data: [
                    {value: 335,name: "Apple"},
                    {value: 310,name: "Grapes"},
                    {value: 234,name: "Pineapples"}
                ]
              }]
        }
        //步骤5:将设置好的配置项传给echarts
        echarts_init.setOption(options)
        </script>
    </body>
 </html>

image

散点图

<!DOCTYPE html>
 <html>
    <head>
        <title>echarts基本使用</title>
        <meta charset="utf-8">
        <!-- 步骤1:引入echarts.js文件 -->
        <script src="echarts.min.js"></script>
    </head>
    <body>
        <!--步骤2:准备一个有大小的dom容器-->
        <div style="width: 500px; height: 500px;" id="bar_dom">
 </div>
        <script>
        //步骤3:初始化echarts
        var echarts_init = 
echarts.init(document.getElementById("bar_dom"))
        //步骤4:设置配置数据项
        var option = {
              title: {
                text:"test",
                subtext:'sub'
              },
              tooltip: {
                trigger: "item"
              },
              legend: {
                data: ["A", "B"]
              },
              xAxis: {
                name:'x轴'
              },
              yAxis: {
                name:'y轴'
              },
              series: [
                {
                  name: "A",
                  data: [
                    [10.0, 8.04],
                    [9.15, 7.2],
                    [12.0, 8.84],
                    [7.08, 5.82],
                    [5.02, 5.68]
                  ],
                  type: 'scatter',
                  showSymbol: true
                },
                {
                  name: "B",
                  data: [
                    [1, 8.04],
                    [9, 7.2],
                    [1, 8.84],
                    [3, 5.82],
                    [4.02, 5.68]
                  ],
                  type: 'scatter'
                }
              ]
            }
        //步骤5:将设置好的配置项传给echarts
        echarts_init.setOption(option)
        </script>
    </body>
 </html>

image

pyecharts的使用

折线图

import pandas as pd
from pyecharts.charts import Line
import pyecharts.options as opt
df = pd.read_csv("./data/birth_rate.csv")
x_data = df['year'].tolist()
y_data = df['bath_rate'].tolist()
line = Line()
line.add_xaxis(xaxis_data=x_data)
line.add_yaxis("出生率", y_data)
line.set_global_opts(title_opts=opt.TitleOpt(title="2013-2022年出生率",pos_left="center"), legend_opts=opt.LegendOpts(orient=“vertical”,pos_right="right"))# lengend_opts先设置orient(方向)。pos_right,pos_left二选一:位置靠左还是靠右
line.render("2013-2022出生率.html")
#line.render_notebook()也可以这样

饼图

import pandas as pd
from pyecharts.charts import Pie
from pyecharts import options as opts
# 从CSV文件中读取数据
data = pd.read_csv("Recommended_food.csv",encoding='UTF-8') 
# 初始化一个饼图对象
pie_chart = Pie()
# 添加数据到饼图中
pie_chart.add('',list(zip(data["Food"],data["quantity"])))
# 设置饼图的标签属性
pie_chart.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
# 设置饼图的全局配置,包括图例的方向和位置 
pie_chart.set_global_opts(legend_opts=opts.LegendOpts(orient="vertical",pos_top="2%", pos_left="5%"))
# 渲染
pie_chart.render_notebook()

image

环形图

import pandas as pd
from pyecharts.charts import Pie
from pyecharts import options as opts
init_opts=opts.InitOpts(width='500px',height='450px')
# 从CSV文件中读取数据
data=pd.read_excel('商家A和商家B的各类商品的销售数据.xlsx',index_col='商家') 
# 初始化一个饼图对象
pie_chart = Pie(init_opts)
# 添加数据到饼图中
pie_chart.add("price", [list(z) for z in zip(data.columns.tolist(),data.loc['商家A'].tolist())],
              radius=[50,100])#半径R(adius)环就多了个这个 半径大小,前为内环半径,后为外环半径
# 设置饼图的标签属性
pie_chart.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c}({d}%)'))
# 设置饼图的全局配置,包括图例的方向和位置 
pie_chart.set_global_opts(title_opts=opts.TitleOpts(title="title",subtitle="sub_title"),
                         legend_opts=opts.LegendOpts(orient="vertical",pos_top="2%", pos_left="5%"),
                         tooltip_opts=opts.TooltipOpts(trigger="item"))#Tooltip就是提示的意思,trigger(触发器:放在哪里会触发提示,item:放在每个项目上会触发提示)作用就是把鼠标放在上面会有提示的项目展开。
# 渲染
pie_chart.render_notebook()

image

散点图

from pyecharts.charts import Scatter
from pyecharts import options as opts
import pandas as pd
df = pd.read_csv("./data/DPI_CPI_2022.csv")
df.sort_values(by="居民人均可支配收入",ascending=True, inplace=True)#升序排序
x_data = list(map(str,df['居民人均可支配收入'].tolist())) #x轴的数据,居民收入是int类型,需要转成str类型
y_data = df['居民人均消费支出'].tolist()#y轴的数据
scater = Scatter()
scater.add_xaxis(xaxis_data=x_data)
scater.add_yaxis("居民人均消费支出", y_data)
scater.render("居民收入和消费的关系散点图.html")

matplotlib的使用

建议参考pdf

折线图

import matplotlib.pyplot as plt
import numpy as np

months = np.arange(1, 13)
sales_data = 100 + 50 * np.random.rand(12)
profit_data = 100 + 50 * np.random.rand(12)
plt.title("test")
plt.plot(months, sales_data, marker="o", linestyle="-.", label="1")
plt.plot(months, profit_data, marker="v", label="2")
plt.xlabel("xxx")
plt.ylabel("yyy")
plt.legend()
plt.xlim(0, 20)
plt.ylim(50, 200)
plt.grid()
plt.figure(figsize=(5, 3))
plt.show()

image

饼图

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None,
pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True,
wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *,
normalize=None, data=None)

  • x:浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。
  • explode:数组,表示各个扇形之间的间隔,默认值为0。
  • labels:列表,各个扇形的标签,默认值为 None。
  • data:用于指定数据。如果设置了 data 参数,则可以直接使用数据框中的列作为 x、labels 等参数的值,无需再次传递。
import matplotlib.pyplot as plt
import numpy as np

months = np.arange(1, 10)
plt.title("test")
plt.pie([10, 20, 30, 40, 50, 60, 70, 80, 90],
        labels=months, autopct="%.2f%%",
        explode=[0, 0, 0, 0, 0, 0, 0, 0, 0.2]
        )
plt.legend()
plt.show()

image

环形图

import matplotlib.pyplot as plt
import numpy as np

months = np.arange(1, 10)
plt.title("test")
plt.pie([10, 20, 30, 40, 50, 60, 70, 80, 90],
        labels=months, autopct="%.2f%%",
        wedgeprops={"width": 0.5, "linewidth": 5, "edgecolor": "w"})
plt.legend()
plt.show()

image

散点图

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,
vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None,
plotnonfinite=False, data=None, **kwargs)
参数说明:

  • x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

  • s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

  • marker:点的样式,默认小圆圈 'o'。

scatter() 函数接收长度相同的数组参数,一个用于 x 轴的值,另一个用于 y 轴上的值

import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])
plt.scatter(x, y, c=colors)
plt.show()

image

posted @ 2024-07-01 16:50  E_sheep  阅读(110)  评论(0编辑  收藏  举报