精华内容
下载资源
问答
  • 以下展示一些用 matplotlib 画条形图折线图、饼图以及散点图的示例,其中类似于图例、坐标轴名称,标题等的显示方法是一样的,不另做介绍。 0、引入模块 import random import matplotlib.pyplot as plt import ...

    以下展示一些用 matplotlib 画条形图、折线图、饼图以及散点图的示例,其中类似于图例、坐标轴名称,标题等的显示方法是一样的,不另做介绍。

    0、引入模块

    import random
    import matplotlib.pyplot as plt
    import matplotlib
    #引入显示中文的黑体,如果中文显示乱码,解决方法参见我的上一篇博文
    matplotlib.rcParams['font.family'] = "SimHei" 
    matplotlib.rcParams["font.size"] = 10         #字号
    matplotlib.rcParams['font.style'] = 'italic'   #字体样式  斜着
    

    1、画条形图

    def plot_histogram():
        x = list(range(7))
        y = random.sample(range(1,10), 7)
        plt.bar(x, y)
        plt.xlabel('x轴')
        plt.ylabel('y轴')
        plt.title('条形图')
        plt.show()
    

    如上述代码所示,x 和 y 分别是生成的数据,
    plt.bar() 则是画条形图的语法,
    plt.xlabel()plt.ylabel() 表示x轴和y轴下的标题,
    plt.title() 则是整幅图的标题,
    对于图片,我们可以使用 plt.shhow() 用来即时展示图片,也可以使用 plt.savefig(path) 来存储图片。

    以下是运行上面这个函数的结果:
    在这里插入图片描述

    2、画折线图

    上面说过,matplotlib 的画图除了语法,其他类似于图例,标签,标题的用法和其他函数都一样,以下是折线图的一个示例:

    def plot_line():
        x = list(range(7))
        y = random.sample(range(1,10), 7)
        plt.plot(x, y, label='y',marker='.', color='blue')
        plt.xlabel('x轴')
        plt.ylabel('y轴')
        plt.title('折线图')
        plt.legend()	#图例,用来表示图中线的信息
        plt.show()
    

    如上述代码,折线图的语法是 plt.plot(),后面的参数信息详解如下:
    label 表示的是标签,用于图例中显示,
    marker 表示的是折线的每个点的标记类型,示例中是 点,还可以是 * 表示 * 号、- 表示实线、-- 表示破折号等。
    color 表示的是线条的颜色,可以是英文,也可以 RGB 代码这种像素来表示颜色,如 color=’#7834ff’
    plt.legend() 表示的是图例,在 matplotlib 中图例的位置是变化的,一般哪里有空位就跑到哪里去了,如果想要固定住,就需要额外用代码来调节。
    以下是示例结果:
    在这里插入图片描述
    如果是要在一幅图里画多条折线,直接把 plt.plot() 这个函数再用一边即可:

    def plot_line():
        x = list(range(7))
        y1 = random.sample(range(1,10), 7)
        y2 = random.sample(range(1,10), 7)
        plt.plot(x, y1, label='y1', marker='.', color='blue')
        plt.plot(x, y2, label='y2', marker='*', color='green')
        plt.xlabel('x轴')
        plt.ylabel('y轴')
        plt.title('折线图')
        plt.legend()
        plt.show()
    

    以下是结果:
    在这里插入图片描述

    3、画饼图

    饼图的语法是 plt.pie(),如下是示例:

    def plot_pie():
    	#这是每个部分的名称
        name_list = ['part1','part2','part3','part4']
        #这是每个部分对应的数据,与上述名称列表对应
        num_list = [56,33,78,95]
        #explode 是用于着重的表示,某个值不为0表示对应某个部分离开圆心的距离
        explode = (0,0,0.1,0)
        #每个部分所用的颜色
        colors = ['orange', 'yellow', 'lime', 'red']
    	
    	#如果画出来的圆是扁的,可以用以下三行代码把圆变成一个正圆
        plt.xlim(0.8)
        plt.ylim(0.8)
        plt.axes(aspect='equal')
    
        plt.pie(num_list, labels=name_list, explode=explode, colors=colors)
        plt.title('饼图', fontsize=18)
        plt.legend()
        plt.show()
    

    plt.pie() 的用法详情都在代码示例中说明了,如下是示例运行结果:

    在这里插入图片描述

    4、画散点图

    散点图的方法是 plt.scatter(),如下是使用示例:

    def plot_scatter():
        x = list(range(7))
        y = random.sample(range(1,10), 7)
        plt.scatter(x, y)
        plt.title('散点图', fontsize=18)
        plt.show()
    

    使用方法就很简答,如下是运行结果:
    在这里插入图片描述
    好了,以上就是这几种图的语法,接下来如果有时间的话,还会涉及以下方面知识点:网格的绘制、坐标名称过长换行的处理、x 轴和 y 轴的变化范围的确定等。

    展开全文
  • ggplot2 接受的数据类型必须为data.frame结构, 离散数据作为x轴 对于条形图, 对于高度的设置有两种不同的选择: x,y 对应的数值为实际的图上数值, x为横轴标签,y为纵轴高度.这时候使用geom_bar(stat="identity")作为...

    一个比较好的ggplot学习博文

    author: 李丕栋
    email: hope-dream@163.com
    date: 2016年3月7日

    http://blog.csdn.net/tanzuozhev/article/details/50822204

    本文在 http://www.cookbook-r.com/Graphs/Bar_and_line_graphs_(ggplot2) 的基础上加入了自己的理解.
    ggplot2 接受的数据类型必须为data.frame结构,

    离散数据作为x轴

    对于条形图, 对于高度的设置有两种不同的选择:

    1. x,y 对应的数值为实际的图上数值, x为横轴标签,y为纵轴高度.这时候使用geom_bar(stat="identity")作为图层.
    library(ggplot2)
    dat <- data.frame(
      time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")),
      total_bill = c(14.89, 17.23)
    )
    dat
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    ##     time total_bill
    ## 1  Lunch      14.89
    ## 2 Dinner      17.23
     
    • 1
    • 2
    • 3

    time列为因子型变量, 表示x轴标签和填充颜色
    total_bill 列为y轴的实际数值, 表示高度

    ggplot(data=dat, aes(x=time, y=total_bill)) +
        geom_bar(stat="identity")
     
    • 1
    • 2

    # 以time作为颜色填充
    ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) +
        geom_bar(stat="identity")
     
    • 1
    • 2
    • 3

    ## 等同于
     ggplot(data=dat, aes(x=time, y=total_bill)) +
        geom_bar(aes(fill=time), stat="identity")
     
    • 1
    • 2
    • 3

    这里写图片描述

    # 添加黑色轮廓线
    ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) +
        geom_bar(colour="black", stat="identity")
     
    • 1
    • 2
    • 3

    这里写图片描述

    # 去除图例
    ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) +
        geom_bar(colour="black", stat="identity") +
        guides(fill=FALSE)
     
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    # 添加其他信息 title, narrower bars, fill color, and change axis labels
    ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) + 
        geom_bar(colour="black", fill="#DD8888", width=.8, stat="identity") + 
        guides(fill=FALSE) +
        xlab("Time of day") + ylab("Total bill") +
        ggtitle("Average bill for 2 people")
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里写图片描述

    1. 输入一组数据,对于x轴与y轴的信息需要进行统计计数.x轴为数据去除重复项的保留值,y轴为x轴对应的重复次数.使用geom_bar(stat="bin")作为新图层.
    # 使用reshape2包的tips数据集
    library(reshape2)
    # 数据展示
    head(tips)
     
    • 1
    • 2
    • 3
    • 4
    ##   total_bill  tip    sex smoker day   time size
    ## 1      16.99 1.01 Female     No Sun Dinner    2
    ## 2      10.34 1.66   Male     No Sun Dinner    3
    ## 3      21.01 3.50   Male     No Sun Dinner    3
    ## 4      23.68 3.31   Male     No Sun Dinner    2
    ## 5      24.59 3.61 Female     No Sun Dinner    4
    ## 6      25.29 4.71   Male     No Sun Dinner    4
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这里输入的变量只有x,没有y,x轴为day,要使用 stat="bin"代替 stat="identity",数据去重后留下Sun Sat Thur Fri,它们对应的重复次数作为y轴.

    # Bar graph of counts
    ggplot(data=tips, aes(x=day,fill=day)) +
        geom_bar(stat="bin")
     
    • 1
    • 2
    • 3

    这里写图片描述

    ## 等同于
    ggplot(data=tips, aes(x=day)) +
       geom_bar()# stat参数默认为 bin
     
    • 1
    • 2
    • 3

    这里写图片描述

    折线图

    time: x-axis
    total_bill: y-axis

    # Basic line graph
    ggplot(data=dat, aes(x=time, y=total_bill, group=1)) +
        geom_line()
     
    • 1
    • 2
    • 3

    这里写图片描述

    ## This would have the same result as above
    # ggplot(data=dat, aes(x=time, y=total_bill)) +
    #     geom_line(aes(group=1))
    
    # 折线图添加点
    ggplot(data=dat, aes(x=time, y=total_bill, group=1)) +
        geom_line() +
        geom_point()
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这里写图片描述

    # 修改颜色
    # Change line type and point type, and use thicker line and larger points
    # Change points to circles with white fill
    ggplot(data=dat, aes(x=time, y=total_bill, group=1)) + 
        geom_line(colour="red", linetype="dashed", size=1.5) + 
        geom_point(colour="red", size=4, shape=21, fill="white")
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里写图片描述

    # Change the y-range to go from 0 to the maximum value in the total_bill column,
    # and change axis labels
    # 修改y轴的范围,从0到最大值
    ggplot(data=dat, aes(x=time, y=total_bill, group=1)) +
        geom_line() +
        geom_point() +
        expand_limits(y=0) +# 修改y轴的范围,从0到最大值 expand_limits(y = c(1, 9)),y从1到9
        xlab("Time of day") + ylab("Total bill") +
        ggtitle("Average bill for 2 people")
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这里写图片描述

    更多数据变量

    新建数据,这里增加了一个变量sex

    dat1 <- data.frame(
        sex = factor(c("Female","Female","Male","Male")),
        time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")),
        total_bill = c(13.53, 16.81, 16.24, 17.42)
    )
    dat1
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    ##      sex   time total_bill
    ## 1 Female  Lunch      13.53
    ## 2 Female Dinner      16.81
    ## 3   Male  Lunch      16.24
    ## 4   Male Dinner      17.42
     
    • 1
    • 2
    • 3
    • 4
    • 5

    条形图

    变量映射
    time: x-axis
    sex: color fill
    total_bill: y-axis.

    # 这里涉及了几个图形的位置摆放
    # 默认为堆叠(Stacked bar graph) 
    ggplot(data=dat1, aes(x=time, y=total_bill, fill=sex)) +
        geom_bar(stat="identity")
     
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    # 位置摆放, position_dodge()为分开摆放
    
    ggplot(data=dat1, aes(x=time, y=total_bill, fill=sex)) +
        geom_bar(stat="identity", position=position_dodge())
     
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    # Change colors
    ggplot(data=dat1, aes(x=time, y=total_bill, fill=sex)) +
        geom_bar(stat="identity", position=position_dodge(), colour="black") +
        scale_fill_manual(values=c("#999999", "#E69F00"))# 修改填充的颜色,填充的颜色数组大小必须与fill(sex)的大小一致
     
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    修改变量的映射,x轴为sex,颜色填充为time

    # Bar graph, time on x-axis, color fill grouped by sex -- use position_dodge()
    ggplot(data=dat1, aes(x=sex, y=total_bill, fill=time)) +
        geom_bar(stat="identity", position=position_dodge(), colour="black")
     
    • 1
    • 2
    • 3

    这里写图片描述

    折线图

    变量映射
    time: x-axis
    sex: line color
    total_bill: y-axis.
    为了画出多条线,数据必须进行分组, 这里我们对sex进行分组,就会出现两条线,Female一条,Male一条.

    # 简单图
    ggplot(data=dat1, aes(x=time, y=total_bill, group=sex)) +
        geom_line() +
        geom_point()
     
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    # 加入颜色
    ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, colour=sex)) +
        geom_line() +
        geom_point()
     
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    # Map sex to different point shape, and use larger points
    ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, shape=sex)) +
        geom_line() +
        geom_point()
     
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    # Use thicker lines and larger points, and hollow white-filled points
    ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, shape=sex)) + 
        geom_line(size=1.5) + 
        geom_point(size=3, fill="white") +
        scale_shape_manual(values=c(22,21))# 修改shape的类型 
     
    • 1
    • 2
    • 3
    • 4
    • 5

    这里写图片描述

    修改变量的映射关系,按照time进行分组,Lunch一组,Dinner一组

    ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) +
        geom_line() +
        geom_point()
     
    • 1
    • 2
    • 3

    这里写图片描述

    例子

    条形图

    ggplot(data=dat1, aes(x=time, y=total_bill, fill=sex)) + 
        geom_bar(colour="black", stat="identity",
                 position=position_dodge(),
                 size=.3) +                        # Thinner lines
        scale_fill_hue(name="Sex of payer") +      # Set legend title
        xlab("Time of day") + ylab("Total bill") + # Set axis labels
        ggtitle("Average bill for 2 people") +     # Set title
        theme_bw()
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这里写图片描述

    折线图

    ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, shape=sex, colour=sex)) + 
        geom_line(aes(linetype=sex), size=1) +     # Set linetype by sex
        geom_point(size=3, fill="white") +         # Use larger points, fill with white
        expand_limits(y=0) +                       # 设置x y轴的起止范围,这里是y从0开始
        scale_colour_hue(name="Sex of payer",      # Set legend title
                         l=30)  +                  # Use darker colors (lightness=30)
        scale_shape_manual(name="Sex of payer",
                           values=c(22,21)) +      # Use points with a fill color
        scale_linetype_discrete(name="Sex of payer") +
        xlab("Time of day") + ylab("Total bill") + # Set axis labels
        ggtitle("Average bill for 2 people") +     # Set title
        theme_bw() +                          # 设置主题
        theme(legend.position=c(.7, .4))           # 设置图例的位置
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    这里写图片描述

    这幅折线图中, 使用了颜色scale_colour_hue,形状 scale_shape_manual,线型scale_linetype_discrete三种属性,应该有3个图例,但是因为图例的名称相同所以归为一类,如果三个图例的名称不同,就会出现3个图例.

    ggplot(data=dat1, aes(x=time, y=total_bill, group=sex, shape=sex, colour=sex)) + 
        geom_line(aes(linetype=sex), size=1) +     # Set linetype by sex
        geom_point(size=3, fill="white") +         # Use larger points, fill with white
        expand_limits(y=0) +                       # 设置x y轴的起止范围,这里是y从0开始
        scale_colour_hue(name="Sex of payer1",      # Set legend title
                         l=30)  +                  # Use darker colors (lightness=30)
        scale_shape_manual(name="Sex of payer2",
                           values=c(22,21)) +      # Use points with a fill color
        scale_linetype_discrete(name="Sex of payer3") +
        xlab("Time of day") + ylab("Total bill") + # Set axis labels
        ggtitle("Average bill for 2 people") +     # Set title
        theme_bw() +                          # 设置主题
        theme(legend.position=c(.7, .4))           # 设置图例的位置
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    这里写图片描述

    连续型数据做x轴

    新建数据

    datn <- read.table(header=TRUE, text='
    supp dose length
      OJ  0.5  13.23
      OJ  1.0  22.70
      OJ  2.0  26.06
      VC  0.5   7.98
      VC  1.0  16.77
      VC  2.0  26.14
    ')
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    dose作为x轴, 这里dose为numeric,视为连续型变量

    ggplot(data=datn, aes(x=dose, y=length, group=supp, colour=supp)) +
        geom_line() +
        geom_point()
     
    • 1
    • 2
    • 3

    这里写图片描述

    当把dose作为连续型变量时,尽管dose只有 0.5, 1.0, 2.0 三类,x轴也必须显示0.5,1.0,1.5,2.0甚至更多的点.

    离散型数据做x轴

    这里我们将dose数据转化为factor类型,就成了离散型, 0.5, 1.0, 2.0就只是单纯的类别名称.

    # Copy the data frame and convert dose to a factor
    datn2 <- datn
    datn2$dose <- factor(datn2$dose)
    ggplot(data=datn2, aes(x=dose, y=length, group=supp, colour=supp)) +
        geom_line() +
        geom_point()
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里写图片描述

    # 直接在ggplot中转换格式也是可以的
    ggplot(data=datn, aes(x=factor(dose), y=length, group=supp, colour=supp)) +
        geom_line() +
        geom_point()
     
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    连续型数据和离散型用于条形图, 得到了相同的图.

    # Use datn2 from above
    ggplot(data=datn2, aes(x=dose, y=length, fill=supp)) +
        geom_bar(stat="identity", position=position_dodge())
     
    • 1
    • 2
    • 3

    这里写图片描述

    # 直接使用factor转化
    ggplot(data=datn, aes(x=factor(dose), y=length, fill=supp)) +
        geom_bar(stat="identity", position=position_dodge())
     
    • 1
    • 2
    • 3

    这里写图片描述

    展开全文
  • # 绘制条形图# 3.1 简单条形图# 使用ggplot()函数和geom_bar(stat="identity")library(gcookbook)ggplot(pg_mean,aes(x=group,y=weight))+geom_bar(stat = "identity")# 当x是连续型(数值型)...
    # 绘制条形图
    
    # 3.1 简单条形图
    # 使用ggplot()函数和geom_bar(stat="identity")
    library(gcookbook)
    ggplot(pg_mean,aes(x=group,y=weight))+geom_bar(stat = "identity")
    # 当x是连续型(数值型)变量时,ggplot不是只在实际取值处绘制图形,而将在x轴上介于最大值
    # 和最小值之间所有可能的取值处绘制条形
    # 可以使用factor()函数将连续型变量转化为离散型变量
    BOD
    str(BOD)
    ggplot(BOD,aes(x=Time,y=demand))+geom_bar(stat = "identity")
    ggplot(BOD,aes(x=factor(Time),y=demand))+geom_bar(stat = "identity")


    # 默认设置下,条形图的填充色为黑灰色且条形图没有边框线,通过调整fill参数的值来改变条形图的填充色
    # 通过colour参数为条形图添加边框线。
    ggplot(pg_mean,aes(x=group,y=weight))+geom_bar(stat = "identity",fill="lightblue",colour="black")


    # 3.2 绘制簇装条形图
    # 将分类变量映射到fill参数,并运行命令geom_bar(position="dodge)
    library(gcookbook)
    cabbage_exp
    ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(position = "dodge",stat = "identity")
    # fill参数用来指定条形的填充色,position="dodge"使得两组条形在水平方向上错开排列
    # 映射给条形填充色参数的变量应该是分类变量而不是连续型变量
    # 通过将geom_bar()中的参数指定为colour="black"为条形添加黑色边框线
    # 通过scale_fill_brewer()或者scale_fill_manual()函数对图形颜色进行设置
    # 使用RColorBrewer包中的Pastell调色板对图形进行调色
    ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(position = "dodge",stat = "identity",colour="black")+scale_fill_brewer(palette = "Pastell")
    # library(RColorBrewer)


    ce <- cabbage_exp[1:5,]
    ce
    ggplot(ce,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(position = "dodge",stat = "identity",colour="black")+scale_fill_brewer(palette = "Pastel1")


    # 3.3 绘制频数条形图
    # 使用geom_bar()函数,同时不要映射任何变量到y参数
    ggplot(diamonds,aes(x=cut))+geom_bar()
    # 等价于使用geom_bar(stat="bin")
    # 当x轴对应于连续型变量时,得到一张直方图
    ggplot(diamonds,aes(x=carat))+geom_bar()
    # 3.4 条形图着色
    # 将合适的变量映射到填充色(fill)上
    library(gcookbook)
    upc <- subset(uspopchange,rank(Change)>10)
    ggplot(upc,aes(x=Abb,y=Change,fill=Region))+geom_bar(stat = "identity")
    # 借助scale_fill_brewer()或者scale_fill_manual()重新设定图形颜色
    # 颜色的映射设定是在aes()内部完成的,而颜色的重新设定是在aes()外部完成的
    # ggplot(upc,aes(x=reorder(Abb,Change),y=Change,fill=Region))+geom_bar(stat = "identity",colour="black")+scale_fill_manual(values = c("#669933","#FFCC66"))+xlab("State")
    # 3.5 对正负条形图分别着色
    library(gcookbook)
    csub <- subset(climate,Source=="Berkeley" & Year >=1900)
    csub$pos <- csub$Anomaly10y >=0
    csub
    ggplot(csub,aes(x=Year,y=Anomaly10y,fill=pos))+geom_bar(stat = "identity",position = "identity")
    # 通过scale_fill_manual()参数对图形颜色进行调整,设定参数guide=FALSE可以删除图例
    ggplot(csub,aes(x=Year,y=Anomaly10y,fill=pos))+geom_bar(stat = "identity",position = "identity",colour="black",size=0.25)+scale_fill_manual(values = c("#CCEEFF","#FFDDDD"),guide=FALSE)
    # 3.6 调整条形宽度和条形间距
    # 通过设定geom_bar()函数的参数width可以使条形变得更宽或更窄,默认值为0.9
    library(gcookbook)
    ggplot(pg_mean,aes(x=group,y=weight))+geom_bar(stat = "identity")
    ggplot(pg_mean,aes(x=group,y=weight))+geom_bar(stat = "identity",width = 0.5)
    ggplot(pg_mean,aes(x=group,y=weight))+geom_bar(stat = "identity",width = 1)
    # 簇状条形图默认组内的条形间距为0。增加组内条形的间距,可通过将width设定小一些,并令position_dodge的取值大于width
    ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(stat = "identity",width = 0.5,position = "dodge")
    ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(stat = "identity",width = 0.5,position = position_dodge(0.7))
    # position="dodge是参数默认为0.9的position_dodge()的简写
    # 下面四个命令等价:
    # geom_bar(position = "dodge")
    # geom_bar(width = 0.9,position = position_dodge())
    # geom_bar(position = position_dodge(0.9))
    # geom_bar(width = 0.9,position = position_dodge(width = 0.9))


    # 3.7 绘制堆积条形图
    # 使用geom_bar()函数,并映射一个变量给填充色参数fill即可
    library(gcookbook)
    ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(stat = "identity")
    cabbage_exp
    # 默认绘制的条形图,条形的堆积顺序与图例顺序相反,通过guides()函数对图例顺序进行调整,并制定图例所对应的需要调整的图形属性
    ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(stat = "identity")+guides(fill=guide_legend(reverse = TRUE))
    # 调整条形的堆叠顺序,通过指定图形映射中的参数order=desc()来实现
    library(plyr)
    ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar,order=desc(Cultivar)))+geom_bar(stat = "identity")
    # 使用scale_fill_brewer()函数得到一个调色板,最后设定colour="black"为条形添加一个黑色边框线
    ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar,order=desc(Cultivar)))+geom_bar(stat = "identity",colour="black")+guides(fill=guide_legend(reverse = TRUE))+scale_fill_brewer(palette = "Pastel1")


    # 3.8 绘制百分比堆积条形图
    # 首先通过plyr包中的ddply()函数和transform()函数将每组条形对应的数据标准化为100%格式,之后,对计算结果绘制堆积条形图
    library(gcookbook)
    library(plyr)
    # 以Date为切割变量()对每组数据进行transform()
    ce <- ddply(cabbage_exp,"Date",transform,percent_weight=Weight/sum(Weight)*100)
    ggplot(ce,aes(x=Date,y=percent_weight,fill=Cultivar))+geom_bar(stat = "identity")
    cabbage_exp
    ce
    ggplot(ce,aes(x=Date,y=percent_weight,fill=Cultivar))+geom_bar(stat = "identity",colour="black")+guides(fill=guide_legend(reverse = TRUE))+scale_fill_brewer(palette = "Pastel1")


    # 3.9 添加数据标签
    # 在绘图命令中加上geom_text()即可为条形图添加数据标签
    # 需要分别指定一个变量映射给x,y和标签本身,通过设定vjust(竖直调整数据标签位置)可以将标签位置移动至条形图顶端的上方或下方
    library(gcookbook)
    # 条形图顶端下方
    ggplot(cabbage_exp,aes(x=interaction(Date,Cultivar),y=Weight))+geom_bar(stat = "identity")+geom_text(aes(label=Weight),vjust=1.5,colour="White")
    # 条形图顶端上方
    ggplot(cabbage_exp,aes(x=interaction(Date,Cultivar),y=Weight))+geom_bar(stat = "identity")+geom_text(aes(label=Weight),vjust=-0.2)
    # 将y轴上限变大
    ggplot(cabbage_exp,aes(x=interaction(Date,Cultivar),y=Weight))+geom_bar(stat = "identity")+geom_text(aes(label=Weight),vjust=-0.2)+ylim(0,max(cabbage_exp$Weight)*1.05)
    # 设定标签的y轴位置使其略高于条形图顶端——y轴范围会自动调整
    ggplot(cabbage_exp,aes(x=interaction(Date,Cultivar),y=Weight))+geom_bar(stat = "identity")+geom_text(aes(y=Weight+0.1,label=Weight))
    # 对于簇状条形图,需设定position=position_dodge()并给其一个参数来设定分类间距
    # 使用字号size来缩小数据标签的字体大小以匹配条形宽度。数据标签的默认字号是5
    ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(stat = "identity",position = "dodge")+geom_text(aes(label=Weight),vjust=1.5,colour="White",position = position_dodge(.9),size=3)
    # 向堆积条形图添加数据标签之前,要先对每组条形对应的数据进行累积求和
    library(plyr)
    # 根据日期和性别对数据进行排序
    ce <- arrange(cabbage_exp,Date,Cultivar)
    # 计算累积和
    ce <- ddply(ce,"Date",transform,label_y=cumsum(Weight))
    ce
    ggplot(ce,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(stat="identity")+geom_text(aes(y=label_y,label=Weight),vjust=1.5,colour="White")
    # 另一种修改堆叠顺序的方法是在标度中指定breaks参数
    # 如果想把数据标签置于条形中部,需对累积求和的结果加以调整,并同时略去geom_bar()函数中对y偏移量(offset)的设置
    ce <- arrange(cabbage_exp,Date,Cultivar)
    # 计算y轴位置,将数据标签置于条形中部
    ce <- ddply(ce,"Date",transform,label_y=cumsum(Weight)-0.5*Weight)
    ggplot(ce,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(stat = "identity")+geom_text(aes(y=label_y,label=Weight),colour="White")


    ggplot(ce,aes(x=Date,y=Weight,fill=Cultivar))+geom_bar(stat = "identity",colour="black")+geom_text(aes(y=label_y,label=paste(format(Weight,nsmall = 2),"Kg")),size=4)+guides(fill=guide_legend(reverse = TRUE))+scale_fill_brewer(palette = "Pastl1")


    # 3.10 绘制Cleveland点图
    # 直接运行geom_point()命令
    library(gcookbook)
    tophit <- tophitters2001[1:25,]
    ggplot(tophit,aes(x=avg,y=name))+geom_point()
    tophit[,c("name","lg","avg")]


    ggplot(tophit,aes(x=avg,y=reorder(name,avg)))+geom_point(size=3)+theme_bw()+theme(panel.grid.major.x = element_blank(),panel.grid.minor.x = element_blank(),panel.grid.major.y = element_line(colour = "grey60",linetype = "dashed"))


    ggplot(tophit,aes(x=reorder(name,avg),y=avg))+geom_point(size=3)+theme_bw()+theme(axis.text.x = element_text(angle = 60,hjust = 1),panel.grid.major.y = element_blank(),panel.grid.minor.y = element_blank(),panel.grid.major.x = element_line(colour = "grey60",linetype = "dashed"))


    # reorder()函数只能根据一个变量对因子水平进行排序
    # 提取出name变量,依次根据变量lg和avg对其进行排序
    nameorder <- tophit$name[order(tophit$lg,tophit$avg)]
    # 将name转化为因子,因子水平与nameorder一致
    tophit$name <- factor(tophit$name,levels = nameorder)
    # geom_segment()函数用“以数据点为端点的线段"代替贯通全图的网格线
    # geom_segment()函数需要设定x,y,xend,yend四个参数
    ggplot(tophit,aes(x=avg,y=name))+geom_segment(aes(yend=name),xend=0,colour="grey50")+geom_point(size=3,aes(colour=lg))+scale_fill_brewer(palette = "Set1",limits=c("NL","AL"))+theme_bw()+theme(panel.grid.major.y =element_blank(),legend.position=c(1,0.55),legend.justification=c(1,0.5))
    # 分面显示,通过调整lg变量的因子水平

    ggplot(tophit,aes(x=avg,y=name))+geom_segment(aes(yend=name),xend=0,colour="grey50")+geom_point(size=3,aes(colour=lg))+scale_fill_brewer(palette = "Set1",limits=c("NL","AL"),guide=FALSE)+theme_bw()+theme(panel.grid.major.y =element_blank())+facet_grid(lg~.,scales = "free_y",space = "free_y")


    # 折线图
    # 4.1 绘制简单折线图
    # 运行ggplot()函数和geom_line()函数,并分别指定一个变量映射给x和y
    library(ggplot2)
    ggplot(BOD,aes(x=Time,y=demand))+geom_line()
    # 当x对应于因子型变量时,必须使用命令aes(group=1)以确保ggplot()知道这些数据属于同一个分组
    BOD1 <- BOD
    BOD1$Time <- factor(BOD1$Time)
    ggplot(BOD1,aes(x=Time,y=demand,group=1))+geom_line()
    # 默认情况ggplot2绘制的折线图y轴范围刚好能容纳数据集中的y值
    # 运行ylim()设定y轴范围或者运行含一个参数的expand_limit()扩展y轴的范围。
    ggplot(BOD,aes(x=Time,y=demand))+geom_line()+ylim(0,max(BOD$demand))
    ggplot(BOD,aes(x=Time,y=demand))+geom_line()+expand_limits(y=0)


    # 4.2 向折线图添加数据标记
    # 在代码中加上geom_point()
    ggplot(BOD,aes(x=Time,y=demand))+geom_line()+geom_point()
    library(gcookbook)
    ggplot(worldpop,aes(x=Year,y=Population))+geom_line()+geom_point()
    ggplot(worldpop,aes(x=Year,y=Population))+geom_line()+geom_point()+scale_y_log10()


    # 4.3 绘制多重折线图
    # 在分别设定一个映射给x和y的基础上,再将另外一个(离散型)变量映射给颜色(colour)或者线型(linetype)即可
    # 载入plyr包,便于使用ddply()函数创建样本数据集
    library(plyr)
    # 对ToothGrowth数据集进行汇总
    tg <- ddply(ToothGrowth,c("supp","dose"),summarise,length=mean(len))
    tg
    # 将supp映射给颜色(colour)
    ggplot(tg,aes(x=dose,y=length,colour=supp))+geom_line()
    # 将supp映射给线型(linetype)
    ggplot(tg,aes(x=dose,y=length,linetype=supp))+geom_line()
    str(tg)
    ggplot(tg,aes(x=factor(dose),y=length,colour=supp,group=supp))+geom_line()
    # 注意,不可缺少group=supp语句,否则,ggplot()会不知如何将数据组合在一起绘制折线图
    # 分组不正确时会遇见另一种问题:折线图呈锯齿状
    ggplot(tg,aes(x=dose,y=length))+geom_line()
    # 原因在于x在每个位置对应于多个点,ggplot()误以为这些点属于同一组数据而将其用一根折线相连。
    # 如果折线图上有数据标记,则可以将分组变量映射给数据标记的属性,如shape和fill等
    ggplot(tg,aes(x=dose,y=length,shape=supp))+geom_line()+geom_point(size=4) #更大的点
    ggplot(tg,aes(x=dose,y=length,fill=supp))+geom_line()+geom_point(size=4,shape=21) # 使用有填充色的点
    # 数据标记会相互重叠,需要令其彼此错开
    # 将连接线左右移动0.2,将点的位置左右移动0.2
    ggplot(tg,aes(x=dose,y=length,shape=supp))+geom_line(position = position_dodge(0.2))+geom_point(position = position_dodge(0.2),size=4)


    # 4.4 修改线条样式
    # 通过设置线型(linetype),线宽(size)和颜色(colour)参数可以分别修改折线的线型、线宽和颜色
    # 通过将这些参数的值传递给geom_line()函数可以设置折线图的对应属性
    ggplot(BOD,aes(x=Time,y=demand))+geom_line(linetype="dashed",size=1,colour="blue")


    # 使用其他调色板为图形着色,可以调用scale_colour_brewer()和scale_colour_manual()函数
    # 加载plyr包
    library(plyr)
    # 对ToothGrowth数据集进行汇总
    tg <- ddply(ToothGrowth,c("supp","dose"),summarise,length=mean(len))
    ggplot(tg,aes(x=dose,y=length,colour=supp))+geom_line()+scale_color_brewer(palette = "Set1")
    # 如果两条折线的图形属性相同,需要指定一个分组变量
    ggplot(tg,aes(x=dose,y=length,group=supp))+geom_line(colour="darkgreen",size=1.5)
    # 因为变量supp被映射给了颜色(colour)属性,所以,它自动作为分组变量
    ggplot(tg,aes(x=dose,y=length,colour=supp))+geom_line(linetype="dashed")+geom_point(shape=22,size=3,fill="white")


    # 4.5修改数据标记样式
    # 在函数aes()外部设定函数geom_point()的大小(size)、颜色(colour)和填充色(fill)
    ggplot(BOD,aes(x=Time,y=demand))+geom_line()+geom_point(size=4,shape=22,colour="darkred",fill="pink")
    # 数据标记默认的形状(shape)是实线圆圈,默认的大小(size)是2,默认的颜色(colour)是黑色(black),填充色(fill)属性只适用于某些(标号21-25)具有独立边框线和填充颜色的点型。
    # fill一般取空值或者NA。将填充色设定为白色可以得到一个空心圆
    ggplot(BOD,aes(x=Time,y=demand))+geom_line()+geom_point(size=4,shape=21,fill="white")


    # 如果要将数据标记和折线设定为不同的颜色,必须在折线绘制完毕后再行设定数据标记的颜色
    # 此时,数据标记被绘制在更上面的图层,从而,避免被折线遮盖
    # 通过aes()函数内部将分组变量映射给数据标记的图形属性可以将多条折线设定为不同的颜色。
    # 使用scale_colour_brewer()函数和scale_colour_manual()函数可以修改默认颜色
    # 在aes()函数外部设定shape和size可以将数据标记设定为统一的形状和颜色
    # 载入plyr包
    library(plyr)
    # 对ToothGrowth数据集进行汇总
    tg <- ddply(ToothGrowth,c("supp","dose"),summarise,length=mean(len))
    # 保存错开(dodge)设置,接下来会多次用的
    pd <- position_dodge(0.2)
    ggplot(tg,aes(x=dose,y=length,fill=supp))+geom_line(position = pd)+geom_point(shape=21,size=3,position = pd)+scale_fill_manual(values = c("black","white"))


    # 4.6绘制面积图
    # 运行geom_area()函数即可绘制面积图
    # 将sunspot.year数据集转化为数据框
    sunspotyear <- data.frame(
      Year = as.numeric(time(sunspot.year)),
      Sunspots = as.numeric(sunspot.year)
    )
    ggplot(sunspotyear,aes(x=Year,y=Sunspots))+geom_area()
    # 默认情况下,面积图的填充色为黑灰色且没有边框线,通过设定填充色(fill)可以修改面积图的填充色
    # 通过设定alpha=0.2将面积图的透明度设定为80%
    # 通过设定颜色(colour)可以为面积图添加边框线
    ggplot(sunspotyear,aes(x=Year,y=Sunspots))+geom_area(colour="black",fill="blue",alpha=.2)
    # 绘制不带边框线的面积图(不设定colour),用geom_line()函数绘制轨迹线
    ggplot(sunspotyear,aes(x=Year,y=Sunspots))+geom_area(fill="blue",alpha=.2)+geom_line()
    # 4.7 绘制堆积面积图
    # 运行geom_area()函数,并映射一个因子型变量给填充色(fill)即可
    library(gcookbook)
    ggplot(uspopage,aes(x=Year,y=Thousands,fill=AgeGroup))+geom_area()
    # 堆积面积图对应的基础数据通常为宽格式(wide format),但ggplot2要求数据必须是长格式(long format)
    # 默认情况下图例的堆积顺序与面积图的堆积顺序是相反的,通过设定标度中的切分(breaks)参数可以翻转堆积顺序
    ggplot(uspopage,aes(x=Year,y=Thousands,fill=AgeGroup))+geom_area(colour="black",size=.2,alpha=.4)+scale_fill_brewer(palette = "Blues",breaks=rev(levels(uspopage$AgeGroup)))
    # 在aes()函数内部设定order=desc(AgeGroup)可以对堆积面积图的堆积顺序进行反转
    library(plyr) # 为了使用desc()函数
    ggplot(uspopage,aes(x=Year,y=Thousands,fill=AgeGroup,order=desc(AgeGroup)))+geom_area(colour="black",size=.2,alpha=.4)+scale_fill_brewer(palette = "Blues")
    # 因为堆积面积图中的各个部分是由多边形构成的,因此其具有左、右框线,这样的绘图效果差强人意且可能产生误导效果
    # 为了对此进行修正,先绘制一个不带边框线的堆积面积图(将colour设定为默认的NA值),然后,在其顶部添加geom_line()
    ggplot(uspopage,aes(x=Year,y=Thousands,fill=AgeGroup,order=desc(AgeGroup)))+geom_area(colour=NA,alpha=.4)+scale_fill_brewer(palette = "Blues")+geom_line(position = "stack",size=.2)


    # 4.8 绘制百分比堆积面积图
    # 首先计算各组对应的百分比
    library(gcookbook)
    library(plyr)
    # 将Thousands转化为Percent
    uspopage_prop <- ddply(uspopage,"Year",transform,Percent=Thousands/sum(Thousands)*100)
    ggplot(uspopage_prop,aes(x=Year,y=Percent,fill=AgeGroup))+geom_area(colour="black",size=.2,alpha=.4)+scale_fill_brewer(palette = "Blues",breaks=rev(levels(uspopage$AgeGroup)))
    uspopage


    # 4.9 添加置信域
    # 运行geom_ribbon(),然后分别映射一个变量给ymin和ymax
    library(gcookbook)
    # 抓取climate数据集的一个子集
    clim <- subset(climate,Source=="Berkeley",select = c("Year","Anomaly10y","Unc10y"))
    clim
    # 将置信域绘制为阴影
    ggplot(clim,aes(x=Year,y=Anomaly10y))+geom_ribbon(aes(ymin=Anomaly10y-Unc10y,ymax=Anomaly10y+Unc10y),alpha=0.2)+geom_line()
    # 使用虚线来表示置信域的上下边界
    ggplot(clim,aes(x=Year,y=Anomaly10y))+geom_line(aes(y=Anomaly10y-Unc10y),colour="grey50",linetype="dotted")+geom_line(aes(y=Anomaly10y+Unc10y),colour="grey50",linetype="dotted")+geom_line()

    展开全文
  • 首先,我们需要对一些数据进行做图,数据如下: ...第二步:选择折线条形图 第三步:可以显示数据 第四步可以根据要求改变图形要素的颜色 最后完成了图标的制作~

    首先,我们需要对一些数据进行做图,数据如下:

     基期现期增长率
    201011010025%
    20111309038%
    20121503045%
    20131604015%
    201418013025%
    201513010034%
    第一步:现将数据敲入到Excel中,并选择插入图表的自由组合


    第二步:选择折线和条形图



    第三步:可以显示数据



    第四步可以根据要求改变图形要素的颜色


    最后完成了图标的制作~

    展开全文
  • 条形图绘制其他样式的柱形图水平的条形图2.误差线坐标轴参数plot方法errorbar方法3.文字注释text方法figtext方法annotate方法 1.条形图 import matplotlib.pyplot as plt data = [5, 20, 15, 25, 10] plt.bar...
  • POI Word 图表、柱状图、条形图折线图、饼图

    千次阅读 热门讨论 2020-04-22 23:03:25
    /** * poi Word生成图表-折线图 */ public class CreateWordXDDFChart2 { public static void main(String[] args) throws Exception { try (XWPFDocument document = new XWPFDocument()) { // create the ...
  • 最近面试发现很多岗位都要求会可视化工具自己就学习Tableau,以下就是今天学习的可视化图形。... 1.折线图: 横坐标为data月份,纵坐标为sales销售,将分类型数据segment拖入标记框里...帕累托图是一种包含条形图...
  • 这一节主要包括条形图(柱状图)、折线图和散点图 条形图(柱状图) 条形图用来展现离散型单变量的分布特征,柱状图是垂直放置的条形图。至于饼图与玫瑰图,则可以将笛卡尔坐标系转换为极坐标系,由于数据分析中这两...
  • Excel提供了相当广泛的功能来创建...我们将此处描述如何创建条形图折线图。其他类型的图表以类似的方式创建。创建图表后,可以访问三个新的功能区,分别是 Design, Layout 和 Format。这些用于完善创建的图表。
  • 1.绘制折线图 假设一天中每隔两个小时(range(2,26,2))的气温(℃)分别是[15,13,14.5,17,20,25,26,26,27,22,18,15] xticks()为绘制x轴的刻度,第一个传入参数为刻度,第二个参数为需要修改的值 xlabel为修改x轴的...
  • 2、直方 import numpy as np x=np.linspace(0,5,5) y=np.random.randint(0,20,size=5) axes=plt.subplot(2,2,1) axes.bar(x,y,color='b') axes1=plt.subplot(2,2,2) axes1.barh(x,y,color='r') axes2=plt....
  • 绘制一组堆叠的条形图,但根据提供的标签将它们分组。 参数: stackData 是一个 3D 矩阵(即 stackData(i, j, k) => (Group, Stack, StackElement)) groupLabels 是 CELL 类型(即 { 'a', 1 , 20, 'foo' };)
  • 【2018-3-1下午】本文包含特色条形图、瀑布柱状图、双曲线起伏对比折线图、双系列单峰柱状图、双向对比条形图、灰背景条形图、环形图做法作图小图片下载链接:https://pan.baidu.com/s/1ht61ru8 密码:be73一 条形...
  • 目录一、Tableau常用功能区二、条形图三、折线图四、直方图 一、Tableau常用功能区 二、条形图 三、折线图 四、直方图
  • 4.接下来我将Angular中实现一个案例,案例所展现的是一个简单的折线图,其中包含数据绑定,以及相关属性的使用. 5.话不多说,效果图如下: 6.我们先创建一个新的Angular工程【命令:ng new my-app】,工程...
  • 折线图条形图,点 不同图形类型的组合 垂直和水平滚动。 您可以用手指触摸手势滚动。 缩放/缩放垂直和水平。 使用两指触摸比例手势(多点触摸),可以更改视口。 实时图(实时更改数据) 第二刻度轴 绘制多个...
  • 今天来记录一下BarChart(条形图)的简单使用! 注:本人使用的版本是MPAndroidChart-v3.0.3(如若版本不同有某些方法更新,可评论区留言,尽我所能帮你解决!) MPAndroidChart的详细使用——LineChart折线图(一...
  • 大家好,我是小五????前几天我看了一个不到2分钟的视频,动态展示了我国的GDP增长。而且是动态条形图折线图叠加一起使用,比较少见!然后我立了一个Flag,说要仿制。本来当天就找了合适的...
  • 用Jfree实现条形柱状图表,java代码实现。可经常用于报表的制作,代码自动生成后可以自由查看。可以自由配置图表的各个...本文给大家介绍使用java实现各种数据统计图(柱形图,饼图,折线图),需要的朋友可以参考下
  • excel画图小记: 1、 高:10 ;宽:16.17;(符合0.618黄金比例) 具体操作:选中图表->...5、百分比面积图如要添加最后的占比标签,可将图形先更改为折线图添加标签完成后,再更改图形为百分比面积图;
  • 一、折线图 二、散点图 三、柱状图 四、直方图 五、饼图 六、条形图
  • 从网络获取统计数据,然后以条形图、柱状图、折线图显示,鼠标点击选中图表中某一条数据之后,高亮显示,默认选中第一条数据。 效果 根据需求设计的效果图如下: 默认选中第一条,点击其他条后,选中该条,...
  • 1.折线图 示例1: (1)原始数据 (2)效果图 (3)考察要点 图表样式 坐标轴设置 …… 示例2: (1)原始数据 示例数据(节选) (2)效果图 (3)考察要点 图表样式 数据系列格式修改 坐标轴自定义数字格式 ...
  • Figure对象 1.1 定义 1.2 划分子图 1.3 设置中文字体 1.4 添加标题 1.5 调整子图 二、散点图 引入 scatter()函数 二、折线图 plot()函数 三、柱状图 1. 普通柱形图 2. 并列柱形图 3. 堆叠条形图 4. 柱线混合图 四、...
  • ggplot2-条形图折线图(转载)

    千次阅读 2017-12-12 09:13:53
    author: 李丕栋  email: hope-dream@163.com  date: 2016年3月7日 ... 本文 http://www.cookbook-r.com/Graphs/Bar_and_line_graphs_(ggplot2) 的基础加入了自己的
  • 需要添加引用,引入外部插件WPFVisifire.Charts插件 3.wpf中XAML中代码 点击按钮时绘制 代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using...
  • Echarts是什么 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行 PC 和移动设备,兼容当前绝大部分...ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据
  • Echarts--Js可视化实现[视觉盛宴]--动态三维条形图、柱状图、饼图、比例图、折线图1、前言2、案列(基于电影推荐系统)2.1 观众年龄分配占比`这里插入代码片`2.2 不同职位观影情况2.3 电影类型分配占比2.4 观影...
  • 此处展示下多张条形图的制作: https://www.zhihu.com/video/1147230136335163392 结果展示如下: 1.3 线形图/折线图 线形图也是常见图表之一,通过线形图,我们可以大量连续的点中发现数据变化的趋势。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,038
精华内容 2,815
关键字:

在条形图上添加折线图