LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭

LOFTER-网易轻博

D3

2025浏览    292参与
脱氧核糖核酸x

啊♂
开完车真实浑♂身♂酥♂爽♂
DL好厉害啊~
这个群是 @WNB_night 的那个cosplay的群
然后我扮演的角色是303
扮演DL的是 @樱栎梵星
和梵星的发的那条动态是同一个
一起来玩啊~
有时群里会开车

啊♂
开完车真实浑♂身♂酥♂爽♂
DL好厉害啊~
这个群是 @WNB_night 的那个cosplay的群
然后我扮演的角色是303
扮演DL的是 @樱栎梵星
和梵星的发的那条动态是同一个
一起来玩啊~
有时群里会开车

脱氧核糖核酸x

选择题(占tag抱歉!)

我在肝DE的车

就是Dreadlord x Entity 303

你们是想让我用图片的形式发出来呢?

还是用文字的形式发出来呢?

那个投的多我就做哪个

一样多的话就图片和文字都发出来

然后说明一下我说的图片指的是我自己画出来

发哪个或者是是否全都发就要看你们的默契和造化喽~

我在肝DE的车

就是Dreadlord x Entity 303

你们是想让我用图片的形式发出来呢?

还是用文字的形式发出来呢?

那个投的多我就做哪个

一样多的话就图片和文字都发出来

然后说明一下我说的图片指的是我自己画出来

发哪个或者是是否全都发就要看你们的默契和造化喽~

脱氧核糖核酸x

【Minecraft】极限救援(8)我也曾有过一个美好的家啊

我终于更了

在一段心里斗争之后我终于码好了字发出来了

时间线大概是303和202未成年的时候

也就是他们活一百年之前

私设202比303小5岁

303与202是义兄妹关系

303是红色军团的首领,但是他们更像是一个大家族

从此红色军团灭亡,202失踪

有轻微DE


        303那边。

        DL拿出一个U盘递给Null:“待会我去拖住303,你趁机用这个病毒黑进303和腐竹的电脑,然后消除病毒。”

     ...

我终于更了

在一段心里斗争之后我终于码好了字发出来了

时间线大概是303和202未成年的时候

也就是他们活一百年之前

私设202比303小5岁

303与202是义兄妹关系

303是红色军团的首领,但是他们更像是一个大家族

从此红色军团灭亡,202失踪

有轻微DE


        303那边。

        DL拿出一个U盘递给Null:“待会我去拖住303,你趁机用这个病毒黑进303和腐竹的电脑,然后消除病毒。”

        “用杀毒软件不行么?”Null接过U盘,问道。

        “所谓‘DL出品必属精品’嘛,我发明的病毒目前还没人能够破解,当然除了我以外。况且还有一句名言叫什么来着?”

        “什么名言?”Null看向DL。

        DL托着下巴想了想,皱了一下眉头,然后一副豁然开朗的样子:“要用病毒打败病毒!”


        DL和Null一边商讨对策,一边寻找记忆片段。画面破碎般地从两人眼前闪过,但是有一个片段深深吸引了DL。

        那是一个有黑色长发的白衣女孩,她坐在一团篝火旁边,女孩看上去很开心,正在和她旁边的两个DL从没见过的生物交谈。

        “这是?”DL情不自禁地停下脚步。

        放眼望去,女孩的周围也有不计其数的长相怪异的物种,他们也围坐在一团一团的篝火旁边,像是在庆祝什么。而坐在女孩旁边的几个怪物就服装上看来,如果这个女孩是他们的女王的话,那他们就是女王手下的两个类似于司令和将军的职位了。

        “嘿!老哥!”女孩正说的开心,就有一个白衣人走了过来,那个人就是303。女孩看到303来了就很兴奋地冲上去给了303一个大大的拥抱。

        “诶~”303接住几乎是飞过来的女孩,用自己的额头蹭了蹭她的额头,“看来今天的战绩不错呀,我们的202大小姐。”

        “202?!原来303还有个妹妹吗?”DL瞪大了双眼。

        202骄傲地刮了一下鼻子,仿佛要把头仰到天上去:“那必须滴,我们今天俘虏了一个Rainimator的成员,还攻破了他们的第一道防线!”说到这里,202做了一个“胜利”的手势。

        “Nice!明天我们去攻打他们的下一个据点,不过听说他们明天也会对我们发动强烈的反击,我们今天先早点休息吧!”303把202放下来。

        “好的老哥!”202蹦蹦跳跳地回到她自己的帐篷了。

        “是的首领!”周围的红色军团士兵们也纷纷起身。


        “这就是他之前提到过的红色军团么?看来他以前,也有一个美好的家啊……”DL叹了一口气。

        这时,DL的思绪被Null打断。

        “找到那个片段了,我们快点走吧。”Null伸手在DL面前晃了晃。

        “嗯?哦哦哦好的,来了。”DL最后瞟了一眼那个画面。


        “放我出去!快放我出去!我们能丢下你们!”画面里,303敲打着一个圆柱形的大型玻璃罩,脸上挂着眼泪。

        “永别了!首领!”红色军团的士兵们也是满脸悲伤地制造出一个传送门。

        “传送门只能通过一个人,你一定要逃出去!哥哥,来生再见!”202蓝宝石一般的眼睛里闪烁着泪光,给装着303的玻璃罩上覆了一层结界,然后转过身去面对气势汹汹的Rainimator大军。

        “冲啊!”202高喊,带领着红色军团与Rainimator大军同归于尽。

        “不!”303绝望地哀嚎,眼睁睁地自己被推进传送门。接下来,画面上一片火海。


        “你今天有点心不在焉噢。”Null摇了摇正看的出神的DL。

        DL终于回过神来,连忙道歉:“不好意思,刚才想事情想的太入迷了。”

        “走吧。”Null拉着DL,走进了片段。


TBC


脱氧核糖核酸x

前情见上篇
私设我在之前的文章里发过,在这里就不一一说明了
这个梗真是百玩不厌,屡试不爽*罒▽罒*
我就是喜欢欺负303略略略你来打我呀
(我说的玩的别打_(:з」∠)_)
有轻微cp向

前情见上篇
私设我在之前的文章里发过,在这里就不一一说明了
这个梗真是百玩不厌,屡试不爽*罒▽罒*
我就是喜欢欺负303略略略你来打我呀
(我说的玩的别打_(:з」∠)_)
有轻微cp向

脱氧核糖核酸x

【Minecraft】组团偷Null(10)是DE车,慎入!

自己搭档想要,当然是给他啦~

本篇完美地诠释了什么叫

“用心做铺垫,用脚写正片”

说明一下我之前说的私设是在我写的mc短文中通用的

所以本篇依然有私设,也有ooc

我们评论区见!

说明一下我发的那个链接只要把中文去掉然后复制到百度上搜就行了

实在不行就私聊见

翻车了的话就下一个微博,然后找一个叫做“脱氧核糖核酸t”的头像是Dreadlord的人,我会在那里发车

或者是加我QQ1974345727

我会把车发到我的空间/相册里

自己搭档想要,当然是给他啦~

本篇完美地诠释了什么叫

“用心做铺垫,用脚写正片”

说明一下我之前说的私设是在我写的mc短文中通用的

所以本篇依然有私设,也有ooc

我们评论区见!

说明一下我发的那个链接只要把中文去掉然后复制到百度上搜就行了

实在不行就私聊见

翻车了的话就下一个微博,然后找一个叫做“脱氧核糖核酸t”的头像是Dreadlord的人,我会在那里发车

或者是加我QQ1974345727

我会把车发到我的空间/相册里

脱氧核糖核酸x

【Minecraft】DE 拍完电影后DL与303的撕逼

这只是我看完《动画人生》后的一个脑洞

私设Him Null 实体303 恐惧魔王是不会死的

看完之后我就站定DE了

人物ooc预警

建议先看完《动画人生》再来看本文

文笔不好别介意哈

转载请注明出处


        《动画人生》里,MC的四大bug中只有实体303活了下来,但是这几个bug都是不死的,而现在他们正在him家里。

        “DL,你去监狱里救一下303吧。”正在给null脖子上缠绷带的him对DL说道。

    ...

这只是我看完《动画人生》后的一个脑洞

私设Him Null 实体303 恐惧魔王是不会死的

看完之后我就站定DE了

人物ooc预警

建议先看完《动画人生》再来看本文

文笔不好别介意哈

转载请注明出处


        《动画人生》里,MC的四大bug中只有实体303活了下来,但是这几个bug都是不死的,而现在他们正在him家里。

        “DL,你去监狱里救一下303吧。”正在给null脖子上缠绷带的him对DL说道。

        “为什么!”DL表示很不满,凭什么要我去救一个怂包啊!之前自己死的那么惨,303武器没了就举手投降,到头来还要队友去救。“我就奇了怪了,之前实体303不就是没了武器嘛!他难道不能自己发射火球?”

        him叹了一口气,没有停下手上的动作:“你还记得之前你夺走了实体303的初吻吗?”

        “是啊,怎么了?难道就因为这个?我还没说他夺走了我的初吻呐!”DL不以为然。

        “你亲他的同时还吸走了他一部分的能力,所以他发不出火球,所以你总应该做些什么吧?”him像一个老妈子一样教导DL,“而且我为了救你给你做了整整三天三夜的手术,我现在还要治疗Null,不是你还能是谁去救?”

        “什么?”DL掀开自己的斗篷,果然,自己小腹上缠着许多带血的绷带。“那好吧。”DL抄起凋零骷髅头就往监狱飞去。

        “记得哈,把能力还给他的方法就是再次亲吻他!”

        “……”DL表示这是什么荒唐的方法


        “Duang”,监狱直接被DL的几个凋零骷髅头夷为平地,“其实303的力量还是不错的嘛。”一把将303从废墟中揪出来:“走吧宰种。”一副看仇人的亚子。

        “干哈这个样子?”303从来都没见过DL这么严肃,表示有点懵逼。

        “你还好意思说,你为什么要投降?我们都死了!”DL很生气,这个时候还装傻,就没好气地朝303吼道。

        “难道你还要我死喽?有命不活还要去送命?”303都DL的奇怪的理论给气笑了,说话的声音都开始颤抖。

        “红眼病!”

        “没眼睛!”


        就这样,两人边打边吵地回到了him家。

        him:“要打架去我(练)房(舞)间(室)打!”说着一jio把两人踹了进去,并“bang”地一声关上了房门。

        “啊!”两人就这么被关在了一起。


  TBC

       

       


墙上的堆积物

D3.js:数据

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>D3 Page Template</title>
      ...

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>D3 Page Template</title>
        <script type="text/javascript" src="d3/d3.js"></script>
    </head>

    <body>
        <script type="text/javascript">
            /* D3 API:
            d3.select从当前文档中选择一系列元素,然后把对它的引用交给调用链中的下一个方法。
            selectAll()取得多个元素.
            selection.append - 创建并添加新元素到选定元素后
            selection.text - 设置或获取选定元素的标签体文本内容。
            */
            d3.select("body")
                .append("p")
                .text("New apragraph!");
            //不使用连缀法·案例
            var body = d3.select("body");
            var p = body.append("p");
            p.text("New paragraph!");

            //不使用连缀法·自己试着小幅修改
            var body = d3.select("body");
            var h1 = body.append("h1");
            h1.text("New paragraph~");



            //Blind Data
            //data
            var dataset = [5, 10, 15, 20, 25] 
            //loading csv data
            /* like this
            Food,Deliciousness
            Apples,9
            Green Beans,5
            Egg Salad Sandwich,4
            Cookies,10
            Vegemite,0.2
            Burrito,7
            */ 
            d3.csv("food.csv",function(data){ 
                console.log(data); 
            }); 
 
            //global variable first
            var dataset;//Global variable
            da.csv("food.csv", function(data){ 
                dataset = data;   //加载完后,复制到datas
                generateVis();    //调用其它依赖函数 
                hideLoadingMsg(); //显示图形的函数 
 
            }); 
            // 调用生成可视化图表的 
            // 其他函数,比如: 
            generateVisualization(); 
            makeAwesomeCharts(); 
            makeEvenAwesomerCharts(); 
            thankAwardsCommittee(); 
            //校验错误 
            var dataset; 
            d3.csv("food.csv" function(error, data){ 
                if (error){ 
                    console.log(error); 
                }else{ 
                    console.log(data); 
                    dataset = data; 
                    generateVis(); 
                    hideLoadingMsg(), 
                } 

            });



            //JSON先略过 
            //动态生成段落 
            var dataset  = [ 5, 10, 15, 20, 25 ]; 
            d3.select("body").selectAll("p") 
            .data(dataset) 
            .enter() 
            .append("p") 
            .text("New paragraph!"); 
            //在控制台查看数组 
            console.log(d3.selectAll("p")); 



 
            //详细解释 
            d3.select("body").selectAll("p") 
            //选择 DOM中的所有段落。因为还没有段落,所以返回空元素。可以认为这个空元素代表马上就会创建的段落。 
            .data(dataset)//解析并数出数据值。 dataset 数组中有 5 个值,因而此后的所有方法都将执行五遍,每次针对一个值。 
            .enter()//重点在此,创建新的绑定数据的元素,必须使用 enter() 。这个方法会分析当前选择的DOM 元素和传给它的数据,如果数据值比对应的 DOM 元素多,就创建一个新的占位元素。然后把这个新占位元素的引用交给链中的下一个方法。 
            .append("p")//取得由 enter() 创建的空占位元素,并把一个 p 元素追加到相应的 DOM 中。然后它再把自己刚创建的元素交给链中的下一个方法。 
            .text("New paragraph!")//取得新创建的 p 元素,插入文本值。 
 
            var dataset  = [ 5, 10, 15, 20, 25 ]; 
            d3.select("body").selectAll("p") 
            .data(dataset) 
            .enter() 
            .append("p") 
            .text("New paragraph!"); 
            //输出数据 
            .text(function(d) { return d; }); 
 
            //自定义新函数,niming函数 
            function(input_value){ 
                return output_value; 
            } 
            function(d){ return d;}//终于从这里看到function(d)的出处了。 
            //命名函数,把函数保存在一个变量中。 
            var doSomething = function(){}, 
 
            //再进行一些变动 
            .text(function(d){ return "I can count up to"+ d }) 



            //为数据添加样式 
            /*D3 API: 
            selection.attr - 设置或获取指定属性。 
            selection.style - 设置或删除 CSS 属性。style优先级高于attr。*/ 
            //设置为red
            .style("color","red") 



            //设置颜色条件 
            .style("color",function(d){ 
                if (d>15){ return "red"; 
            }else{ 
                return "blue"; 
            } 
            }); 



        </script> 
 
 
 
    </body> 
</html> 



墙上的堆积物

D3.js:基础图表

饼图

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>D3 Page Template</title>
    <script src="http://d3js.org/d3.v3.min.js">
  ...

饼图

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>D3 Page Template</title>
    <script src="http://d3js.org/d3.v3.min.js">
    </script>    
    <style>
    </style>
  </head>
  <body>
    <script>
      var w = 300;
      var h = 300;
      var dataset = [ 5, 10, 20, 45, 6, 25 ];
      var pie = d3.layout.pie();
      var color = d3.scale.category10()
      var outerRadius = w/2;
      var innerRadius = w/3;
      var arc = d3.svg.arc()
                      .innerRadius(innerRadius)
                      .outerRadius(outerRadius)
      var svg = d3.select("body")
                  .append("svg")
                  .attr("width",w)
                  .attr("height",h)
      var arcs = svg.selectAll("g.arc")
                    .data(pie(dataset))
                    .enter()
                    .append("g")
                    .attr("class","arc")
                    .attr("transform","translate("+ outerRadius +","+ outerRadius +")");
      arcs.append("path")
          .attr("fill",function(d, i){
            return color(i);
          })
          .attr("d",arc);//将角度转化为弧度
      arcs.append("text")
          .attr("transform",function(d) {
            return "translate(" + arc.centroid(d) + ")";
          })
          .attr("text-anchor","middle")
          .text(function(d) {
            return d.value;
          });
      /*
      d.value--引用的是 d.value 而不只是 d 。因为绑定的是饼图数据,所以不能再引用原始数组中的元素( d ),而要引用对象数组中的值( d.value )
       arc.centroid(d)图心(centroid )就是通过计算得到的任何图形的中心点,无论是常规图形(比如正方形)还是极为不规则的图形(比如马里兰州的边境线)。
      */
    </script>
  </body>
</html>







柱状图

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>D3 Page Template</title>
    <script src="http://d3js.org/d3.v3.min.js">
    </script>    
    <style>
    </style>
  </head>
  <body>
    <script>
    var w = 500;
    var h = 300;
      /*原始数据
      var dataset = [
          { apples: 5, oranges: 10, grapes: 22 },
          { apples: 4, oranges: 12, grapes: 28 },
          { apples: 2, oranges: 19, grapes: 32 },
          { apples: 7, oranges: 23, grapes: 35 },
          { apples: 23, oranges: 17, grapes: 43 },
      ]
      */
      //数组重组
      var dataset = [
        [
          {x: 0, y: 5 },
          {x: 1, y: 4 },
          {x: 2, y: 2 },
          {x: 3, y: 7 },
          {x: 4, y: 23}
        ],

        [
          {x: 0, y: 10},
          {x: 1, y: 12},
          {x: 2, y: 19},
          {x: 3, y: 23},
          {x: 4, y: 17}
        ],
        [
          {x: 0, y:22},
          {x: 1, y:28},
          {x: 2, y:32},
          {x: 3, y:35},
          {x: 4, y:43}
        ]
      ];
      var stack = d3.layout.stack();
      stack(dataset);
      var xScale = d3.scale.ordinal()
                      .domain(d3.range(dataset[0].length))
                      .rangeRoundBands([0, w], 0.05)
      var yScale = d3.scale.linear()
                      .domain([0,d3.max(dataset,function(d) {
                        return d3.max(d,function(d) {return d.y0 + d.y});
                      })])
                      .range([0, h]);
      var colors = d3.scale.category10();
      var svg = d3.select("body")
                  .append("svg")
                  .attr("width", w)
                  .attr("height", h);
      var groups = svg.selectAll("g")
                      .data(dataset)
                      .enter()
                      .append("g")
                      .style("fill", function(d, i){return colors(i);});

      var rects = groups.selectAll("rect")
                        .data(function(d) {return d; })
                        .enter()
                        .append("rect")
                        .attr("x", function(d, i){return xScale(i)})
                        .attr("y", function(d, i){return yScale(d.y0)})
                        .attr("height", function(d){return yScale(d.y)})
                        .attr("width", xScale.rangeBand());
    </script>
  </body>
</html>





力导向

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>D3 Page Template</title>
    <script src="http://d3js.org/d3.v3.min.js">
    </script>    
    <style>
    </style>
  </head>
  <body>
    <script>
      var w = 500;
      var h = 300;

      var dataset = {
        nodes:[
                { name: "Adam" },
                { name: "Bob" },
                { name: "Carrie" },
                { name: "Donovan" },
                { name: "Edward" },
                { name: "Felicity" },
                { name: "George" },
                { name: "Hannah" },
                { name: "Iris" },
                { name: "Jerry" }
        ],
        edges:[
                { source: 0, target: 1 },
                { source: 0, target: 2 },
                { source: 0, target: 3 },
                { source: 0, target: 4 },
                { source: 1, target: 5 },
                { source: 2, target: 5 },
                { source: 2, target: 5 },
                { source: 3, target: 4 },
                { source: 5, target: 8 },
                { source: 5, target: 9 },
                { source: 6, target: 7 },
                { source: 7, target: 8 },
                { source: 8, target: 9 }
        ]
      };

      var force = d3.layout.force()
                    .nodes(dataset.nodes)
                    .links(dataset.edges)
                    .size([w,h])
                    .linkDistance([50])//结点的连线长度
                    .charge([-100])//负电荷,排斥程度
                    .start();
      var colors = d3.scale.category10();
      var svg = d3.select("body")
                  .append("svg")
                  .attr("width", w)
                  .attr("height", h);
      //创建连接直线
      var edges = svg.selectAll("line")
                      .data(dataset.edges)
                      .enter()
                      .append("line")
                      .style("stroke", "#ccc")
                      .style("stroke-width", 1);
      var nodes = svg.selectAll("circle")
                      .data(dataset.nodes)
                      .enter()
                      .append("circle")
                      .attr("r", 10)
                      .style("fill",function(d, i){
                        return colors(i);
                      })
                      .call(force.drag);
      force.on("tick",function(){
        edges.attr("x1", function(d) { return d.source.x; })
             .attr("y1", function(d) { return d.source.y; })
             .attr("x2", function(d) { return d.target.x; })
             .attr("y2", function(d) { return d.target.y; });

        nodes.attr("cx", function(d) { return d.x; })
             .attr("cy", function(d) { return d.y; })
      });
    </script>
  </body>
</html>



力导向很好玩呀~


墙上的堆积物

D3.js:动效:更新、过渡

今天第一次体验了D3的交互行为,动画让我觉得超赞,而且没有想到居然还有像AfterEffect里的缓动特效,代码改变世界的节奏好嘛!

(ง •̀_•́)ง


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>D3: SVG bar chart with value labels (...

今天第一次体验了D3的交互行为,动画让我觉得超赞,而且没有想到居然还有像AfterEffect里的缓动特效,代码改变世界的节奏好嘛!

(ง •̀_•́)ง


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>D3: SVG bar chart with value labels (centered)</title>
    <script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>
    <style type="text/css">
      /* No style rules here yet */   
    </style>
  </head>
  <body>
    <script type="text/javascript">
      var w = 600;
      var h = 250;
      //设定x轴比例
      var xScale = d3.scale.ordinal()//指定序数集。类似ABCD
                      .domain(d3.range(dataset.length))//值域设置
                      /*映射范围,自动分档。
                      [0, w]计算可以均分为几档,除以值域个数
                      0.05设定档间距
                      */
                      .rangeRoundBands([0, w], 0.05)
      //设定y轴比例
      //需要注意的是,y轴仍旧使用线性比例尺,而非序数
      var yScale = d3.scale.linear()
                .domain([0, d3.max(dataset)])
                .range([0, h]);
      //对下面的代码进行更改。
      //条形坐标·之前
         .attr("x", function(d, i) {
            return i * (w / dataset.length);
         })
         .attr("y", function(d) {
            return h - (d * 4);
         })
      //条形坐标·之后
         .attr("x", function(d, i) {
            return xScale(i);
         })
         .attr("y", function(d) {
            return h - yScale(d);
         })
      //条形高宽·之前
         .attr("width", w / dataset.length - barPadding)
         .attr("height", function(d) {
            return d * 4;
         })
      //条形高宽·之后
         .attr("width", xScale.rangeBand())
         .attr("height", function(d) {
            return yScale(d);
         })
      //标签坐标·之前
         .attr("x", function(d, i) {
            return i * (w / dataset.length) + (w / dataset.length - barPadding) / 2;
         })
         .attr("y", function(d) {
            return h - (d * 4) + 14;
         })
      //标签坐标·之后
         .attr("x", function(d, i) {
            return xScale(i) + xScale.rangeBand()/2;
         })
         .attr("y", function(d) {
            return h - yScale(d) + 14;
         })




      //监听行为
       <p>Click on this text to update the chart with new data values (once)</p>
      d3.select("p")
        .on("click",function(){
          alert("Hey,don't click that!")
        })



      //单击时更新数据
        d3.select("p")
        .on("click",function(){
          dataset = [ 11, 12, 15, 20, 18, 17, 16, 18, 23, 25, 5, 10, 13, 19, 21, 25, 22, 18, 15, 13 ];
          svg.selectAll("rect")
             .data(dataset)
             .attr("y", function(d) {
                return h - yScale(d);
             })
             .attr("width", xScale.rangeBand())
             .attr("height", function(d) {
                return yScale(d);
             })
             .attr("fill", function(d) {
              return "rgb(0, 0, " + (d * 10) + ")";
             });
      svg.selectAll("text")
         .data(dataset)
         .text(function(d) {
            return d;
         })
         .attr("x", function(d, i) {
            return xScale(i) + xScale.rangeBand()/2;
         })
         .attr("y", function(d) {
            return h - yScale(d) + 14;
         })
        });

      //添加过渡效果
      .transition()//过渡
      .duration(2000)//持续时间

     </script>
  </body>
</html>


墙上的堆积物

D3.js:绘制SVG

今天学习的是SVG的绘制,也是D3的核心内容之一,虽然这章并没有学完,但稍微的浏览了下后面的内容,我觉得D3果然是个神器没跑了~那就好好学着吧。

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8">
<title>D3 Page Template</title>
<script src="d3/d3.js"></script>
<style>
div.bar {
display...

今天学习的是SVG的绘制,也是D3的核心内容之一,虽然这章并没有学完,但稍微的浏览了下后面的内容,我觉得D3果然是个神器没跑了~那就好好学着吧。


<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8">
<title>D3 Page Template</title>
<script src="d3/d3.js"></script>
<style>
div.bar {
display: inline-block;
width: 20px;
height: 75px;/*后面会根据数值定义*/
background-color: teal;
}
</style>
</head>
<body>
<script>
var dataset = [5, 10, 15, 20, 25 ]
<div class="bar"></div>
//attr()用于设定 HTML 元素的属性和值。
/*包含以下5个属性及值
class caption
id country
src logo.png
width 100px
alt Logo
*/
//.attr("class","bar")等同<div class="bar"></div>
//利用class()快速添加或删除元素的类
.classed("bar",true)
.classed("bar",false)

//案例
var dataset = [5, 10, 15, 20, 25 ];
d3.select("body").selectAll("div")
.data(dataset)
.enter()
.append("div")
.attr("class","bar")
//添加高度,并以5倍乘,添加间隙
.style("height",function(d){
return d*5 +"px";
});



//excise

var dataset = [ 25, 7, 5, 26, 11, 8, 25, 14, 23, 19, 14, 11, 22, 29, 11, 13, 12, 17, 18, 10, 24, 18, 25, 9, 3 ];
d3.select("body").selectAll("div")
.data(dataset)
.enter()
.append("div")
.attr("class","bar")
.style("height",function(d){
return d*5 + "px";
})



//随机柱状图
var dataset = [];//空数组
//for 循环
for (var i = 0; i<25; i++){
var newNumber = Math.floor(Math.random()*30); //生成介于0到30的随机数
dataset.push(newNumber)//将数值追加到数组中。
}
//math.round()向上舍入最接近的整数
//math.floor()向下舍入最接近的整数
var newNumber = Math.round(Math.random()*30)

//完整
var dataset = [];
for (var i = 0; i<25; i++){
var newNumber = Math.floor(Math.random()*30);
dataset.push(newNumber);
}
d3.select("body").selectAll("div")
.data(dataset)
.enter()
.append("div")
.attr("class","bar")
.style("height",function(d){
return d*5 +"px";
})
/*出错点:
d3.select <- da.select
for(var i = 0; i<25; i++) <- (var i = 0, i<25, i++)
.data(dataset) <- .data = dataset
return d*5 +"px" <-return d*5 +px
*/




//绘制SVG

//create cirle
//set width and height
var w = 500;
var h =50;
d3.select("body").append("svg")//create a svg
var svg = d3.select("body")
.append("svg")//create a new variable
.attr("width",w)
.attr("height",h);
var = dataset = [5, 10, 15, 20, 25 ];
svg.selectAll("circle")
.data(dataset)
.enter()
.append("circle");
/*set cx cy and r
cx:圆心x坐标
cy:圆心y坐标
r :半径,此处直接使用数据值。
*/
circle.attr("cx", function(d, i){
return (i * 50 ) + 25;
})
.attr("cy",h/2)
.attr("r",function(d) {
return d;
});



//fill color
.attr("fill","yellow")
.attr("stroke","orange")
.attr("stroke-width",function(d) {
return d/2;



      //create rect
      var dataset = [ 5, 10, 13, 19, 21, 25, 22, 18, 15, 13,11, 12, 15, 20, 18, 17, 16, 18, 23, 25 ];
      var w = 500
      var h = 100
      var svg = d3.select("body")
                 .append("svg")
                 .attr("width",w)
                 .attr("height",h);

     svg.selectAll("rect")
     .data(dataset)
      .enter()
      .append("rect")
      .attr("x",0)
      .attr("y",0)
      .attr("weight",20)
      .attr("height",100);
      //解决重叠问题
      .attr("x", function(d, i) {
          return i * 21;
         })//width:20,gap:1




      //宽度的动态缩放
      var ws = w / dataset.length - barpadding//自己给加的一个函数,我作者也只是忘了放上去吧。
         .attr("x", function(d, i) {
          return i * (ws + 1);
         })//width:20,gap:1
         .attr("width", ws)





      //坐标轴变换
         .attr("y", function(d) {
          return h - d * 4;
         .attr("height", function(d) {
          return d * 4;
         })
        //fill color
        .attr("fill", "teal")




         //自己尝试定义了一个条件,终于有次能不看书敲出if的代码了!
         .attr("fill", function(d) {
          if (d > 15){
            return "red"
          }else{return "black"};
         })


      //多值映射的写法
      svg.select("rect")
         .data(dataset)
         .enter()
         .append("rect")
         .attr({
          x:function(d, i) {
            return i * (ws + 1);},
          y:function(d) { return h - d * 4;},
          width: w / dataset.length - barpadding,
          height: function(d) { return d *4 ;}
          fill: function(d) { return "rgb(255, 0, " + (d * 10) + ")";}
         })

 

      //添加数值标签
      svg.selectAll("text")
         .data(dataset)
         .enter()
         .append("text")
         .text(function(d) {
          return d;
         })
         .attr("x",function(d, i ) {
          return i * ( ws + 1);
         })
         .attr("y",function(d) {
          return h - (d * 4) + 14;
         })
         .attr("fill","white")


作者吐槽:
假如你没有排版强迫症,现在就可以收手了。不过,假如你跟我一样吹毛求疵,会发现值标签与各自的条形没有完美对齐。(比如,第一个条形中的 5。)改这个太容易啦,可以使用 SVG 的 text-anchor 属性来水平居中文本,就像指定 x 值一样:
         .attr("text-anchor", "middle")
太懂我好嘛!!!
加上去了以后。
         .attr("text-anchor","middle")

  
 

但是居然是这样的@_@

发现问题后,才知道x的轴点没算对。果然数学太差,智商捉急。
         .attr("x",function(d, i ) {
          return i * ( ws + 1) + ws / 2;
         })

      //添加数值标签全部代码
      svg.selectAll("text")
         .data(dataset)
         .enter()
         .append("text")
         .text(function(d) {
          return d;
         })
         .attr("x",function(d, i ) {
          return i * ( ws + 1) + ws / 2;
         })
         .attr("y",function(d) {
          return h - (d * 4) + 14;
         })
         .attr("fill","white")
         .attr("text-anchor","middle")



      //绘制散点图
      //散点图需要用到数组。(x,y)轴点
      var w = 500
      var h = 100
      var dataset = [
        [  5,  20 ],
        [480,  90 ],
        [250,  50 ],
        [100,  33 ],
        [330,  95 ],
        [410,  12 ],
        [475,  44 ],
        [ 25,  67 ],
        [ 85,  21 ],
        [220,  88 ]
      ];

      //绘制svg
      var svg = d3.select("body")
                  .append("svg")
                  .attr("width", w)
                  .attr("height", h);

      svg.selectAll("circle")
          .data(dataset)
          .enter()
          .append("circle")
          .attr("cx",function(d) {
            return d[0];
          })
          .attr("cy",function(d) {
            return d[1];
          })
          .attr("r", 5);

  
 

      /*数组中的元素调用
      d[0]返回小数组的第一个元素-> 5
      d[1]返回小数组的第二个元素-> 20
      访问大数组的值
      dataset[5] -> [410,12]
      */


      /*设置散点大小
      几乎所有的绘图都是无法直接指定圆形面积的,都需要依靠自己计算半径,也就是对面积开平方*/
          .attr("r", function(d) {
            return Math.sqrt(h - d[1])
          });



      //添加标签
      svg.selectAll("text")
          .data(dataset)
          .enter()
          .append("text")
          .text(function(d){
            return d[0] + "," + d[1];
          })
          .attr({
          x: function(d) {return d[0];},
          y: function(d) {return d[1];},
          fill: "red",
          })
          .attr("font-size","11px")
          .attr("font-family","sans-serif");


 
    </script> 
 
  </body> 
</html> 
 
This would be a good time to take a break and stretch your legs. Maybe go for a walk, or grab a coffee or a sandwich. I’ll hang out here (if you don’t mind), and when you get back, we’ll jump into D3 scales! 
 
好的呢~看完吃了顿饭回来写这个~ 



墙上的堆积物

D3.js:准备工作

只是作为个人学习的记录。其中的注解都不是很详细,还很乱!既然已经点进来了就随意看吧。


<!-- 第一次知道一个元素能指定多个类。多个class中间用空格分隔。-->
<p class="uplifting awesome">Awe-inspiring paragraph</p>
<!-- 比如uplifting和awesome就是两个class-->

<!--也第一次了解了DOM的概念-->

<!--相同属性可以应用给多个class,用,分隔-->

<style type="...

只是作为个人学习的记录。其中的注解都不是很详细,还很乱!既然已经点进来了就随意看吧。


<!-- 第一次知道一个元素能指定多个类。多个class中间用空格分隔。-->
<p class="uplifting awesome">Awe-inspiring paragraph</p>
<!-- 比如uplifting和awesome就是两个class-->

<!--也第一次了解了DOM的概念-->

<!--相同属性可以应用给多个class,用,分隔-->

<style type="text/css">
selectorA,
selectorB,
selectorC {
    
    property: value;
    property: value;
    property: value;
}
</style>

<!--编码声明这东西之前从来没有注意要写入-->

<meta charset="utf-8">

<!-- attach inline styles 内部CSS控制,但不推荐 -->
<p style="color: blue; font-size: 48pt;font-style: italic;">Inline styles are kind of a hassle</p>


//JavaScript的初始尝试;

//赋值;
var numbers = [ 5, 10, 15 ];
var names =["Ernie", "Bert", "Oscar"];
// 构造对象;
var fruit ={
  kind: "grape",
  color: "red",
  quantity: 12,
  tasty: true
};

//引用对象;
fruit.kind

//构造数组;
var fruit =[
  {
    kind: "grape",
    color: "red",
    quantity: 12,
    tasty: true
  },
  {
    kind: "kiwi",
   color: "brown",
    quantity: 98,
    tasty: true
  },
  {
    kind: "banner",
    color: "yellow",
    quantity: 0,
    tasty:true
  }
];

//运行结果
fruit[0];
fruit[0].color;

/*运算符
根据昨天看的代码规范【==等于号】最好使用【===恒等号】,类似【!==】*/

== // 等于
!= // 不等于
< // 小于
> // 大于
<= // 小于等于
>= // 大于等于

//控制结构
//if语句

if (3 < 5) {
  console.log("Eureka! Three is less than five!")
}

//测试
var a = 3;
var b = 5;

if (a < b){
  a = b
};

a

result = 5


//for循环语句
for (initialization; test; update){
  //运行代码
}

for (var i = 0; i < 5 ;i++){
  console.log(i)
}

//i++ -> i = i + 1


//数组循环

var numbers = [ 8, 100, 22, 98, 99, 45 ];
for (var i = 0; i < numbers.length; i++){
  console.log(numbers[i]);
};

//函数

calculateGratuity(38);
var calculateGratuity = function(bill) {
  return bill * 0.2;
};


var tip = calculateGratuity(38)
console.log(tip);
tip;



//引用脚本文件
<head>
  <title>Page Title</title>
  <script src="myscript.js"></script>
</head>

//判断数据类型 typeof
//boolean的概念 only True or False


/*特殊:变量提升
事实上也是代码规范所建议的。*/

var numLoops = 100;
var i;
for(i = 0; i<numLoops; i++){
  console.log(i);
};

<svg width="50" height="50">
<circle cx="25" cy="25" r="22" fill="blue" stroke="gray" stroke-width="2"/>
</svg>

<rect x="0" y="0" width="500" height="50"/>
<circle cx="250" cy="25" r="25"/>
<ellipse cx="250" cy="25" rx="100" ry=25/>



墙上的堆积物

D3.js:学习资源汇总

除了D3.js自身以外,许多可视化工具包都是基于D3开发的,所以对D3的学习就显得很重要了,当然如果已经有了Javascript的经验,学起来也会不费力些。

Github主页:https://github.com/mbostock/d3/wiki

    包括D3简介,案例,教程和公开课,以及之前提到的API参考等。

Github教程页面:https://github.com/mbostock/d3/wiki/Tutorials

-·-·-·-·-·-
其他:
-·-...

除了D3.js自身以外,许多可视化工具包都是基于D3开发的,所以对D3的学习就显得很重要了,当然如果已经有了Javascript的经验,学起来也会不费力些。

Github主页:https://github.com/mbostock/d3/wiki

    包括D3简介,案例,教程和公开课,以及之前提到的API参考等。

Github教程页面:https://github.com/mbostock/d3/wiki/Tutorials

-·-·-·-·-·-
其他:
-·-·-·-·-·-

^^Scott Murray-D3 tutorials

    中文翻译文档: pkuwwt-D3入门教程:http://pkuwwt.gitcafe.com/d3-tutorial-cn/about.html


^^以及同样来自Scott Murray的书籍:O'reilly出版

    电子版·Interactive data visualization for the web:http://chimera.labs.oreilly.com/books/1230000000345/index.html

    纸质版·中文《数据可视化实战:使用D3设计交互式图表》



    偷偷的放上 Pdf下载·百度云:(如果有能力,请支持正版。)

    作者提供在Github提供了书本案例源码:https://github.com/alignedleft/d3-book/

    除了英文看得略吃力以外,还是建议结合英文网站学习。


这边是部分网上的教程:

慕课网上的公开课:《使用D3创建图表》http://www.imooc.com/view/103

^^Dashing D3.js:https://www.dashingd3js.com/

资源丰富,但部分需要依靠电子邮件获取,以及购买。包括视频教程以及一些小练习。当然D3 Tutorial Table of Contents页面不需要。


^^来自阮一峰的D3教程 :http://javascript.ruanyifeng.com/library/d3.html#

    只适合已经掌握了Javascript的学习者。

    ||另:可以看看他的JavaScript 标准参考教程(alpha)


^^发现一个中文博客·数据可视化专题站,D3.js 入门系列~如果是大神的话,我想应该不需要看。自己练习过程中遇到问题,我觉得看看也没事。

http://www.ourd3js.com/wordpress/


其实发现D3教程页面本身提供了很多资源了。也是一些资源的整合。

网上的教程作品(部分是深坑注意鉴别,另外还有华盛顿大学的数据可视化公开课)+视频+出版物。


||另:还是建议深入了解一下Javascript的相关知识。这话其实也是对自己说的。


panhongyou
一朵花也可以绽放它独自的美!

一朵花也可以绽放它独自的美!

一朵花也可以绽放它独自的美!

Saturday66
雾霾天的树枝可以水墨一点

雾霾天的树枝可以水墨一点

雾霾天的树枝可以水墨一点

皇竹调_死于托福

《在人间想家》 Tyrael/Imperius

其实清水近于无差


1.

    泰瑞尔在走进那个小酒馆的前一秒还在想着怎么找出谎言之王彼列,下一秒他就被食物的香气吸走了兴趣。

    天使是不用进食的,而如今作为凡人的他不得不接触这些毫不熟悉的东西。烤鸡的表层裹了厚厚的一层油脂,白嫩的肉丝在灯火下泛着晶莹的光。泰瑞尔其实并不能完全理解这份食物的妙处,但是从与他同行的冒险者对话中得来,这绝对是这么多天他们所吃到的最好的一餐了。

    “尝尝这个,我的天使同伴!”魔女推来了一杯蜂蜜酒,她绿色的眼睛亮晶晶的,仿佛在献上来之不易的宝贝。泰瑞尔环顾了周围一圈,...

其实清水近于无差


1.

    泰瑞尔在走进那个小酒馆的前一秒还在想着怎么找出谎言之王彼列,下一秒他就被食物的香气吸走了兴趣。

    天使是不用进食的,而如今作为凡人的他不得不接触这些毫不熟悉的东西。烤鸡的表层裹了厚厚的一层油脂,白嫩的肉丝在灯火下泛着晶莹的光。泰瑞尔其实并不能完全理解这份食物的妙处,但是从与他同行的冒险者对话中得来,这绝对是这么多天他们所吃到的最好的一餐了。

    “尝尝这个,我的天使同伴!”魔女推来了一杯蜂蜜酒,她绿色的眼睛亮晶晶的,仿佛在献上来之不易的宝贝。泰瑞尔环顾了周围一圈,莉娅在埋头苦吃,魔法师朝他露出一个鼓励的笑容。

    “享受你作为凡人的福利。”她这么说道。

    凉滑的液体没有经过多少劝说就进了泰瑞尔的肚子,他感到一股热流顺着他的食道直涌到他的鼻腔,眼泪一下子溢出了眼眶。大天使连忙把酒杯放了回去,伸手捂住嘴咳了几声,同伴们发出善意的笑声,李敏伸手拍了拍他的后背。

    “慢慢来,喝酒是仅次于魔法之后的艺术……”

    蜂蜜酒不是最好喝的酒,更不是最烈的酒,可它依然使第一次碰酒精的大天使着了迷。冰凉的液体包裹住舌头,在向后流的时候逐渐蔓延开的甜味和辣味,然后滑过喉口留下一阵腥甜。泰瑞尔闭上了眼睛,他觉得肚子里有火在烧,不是那么舒服,却让他很是解脱。

    有那么一瞬间,他觉得不再是被厚重凡人躯壳囚禁的堕天使,也不再背负着拯救世界的重担。他只是正义天使,最纯洁的存在,翅膀扇动的每一下都是为了在世间伸张正义。黑就是黑,白就是白,绝对不会存在像庇护之地这样令人难以决定的灰色地带。生活的一切组成就是:杀恶魔,杀恶魔,杀恶魔,被恶魔杀。

    水晶穹顶与混沌之界两点一线,是他最单纯的生活。他从未怀疑过自己生命是否毫无意义,更没有因为自己的判断或决定而陷入进退两难的境地。

    高阶天堂,永恒之战。他满脑子都是这些。

    泰瑞尔的手指绕着杯沿打转。

    还有英普瑞斯。


2.

    永恒之战打起来并不比凡人的那些战争高贵多少。

    恶魔的鲜血与残肢洒满整片灰土,天使失去光泽的盔甲以及成网状干枯的羽翼是他们离去所能留下的唯一。所有生灵都在这片灰漆漆的天空下打来打去,用矛尖贯穿对方的喉咙,拿刀剑砍下敌人的手脚。曾经的勇士倒下,成为后来者的垫脚。长之久往,还活着的无论是天使还是恶魔,都变得惜命了起来。

    打得过就追,打不过就跑。

    本来所有行动都要照着这句至理名言来做的,可偏偏有那么个天使,泰瑞尔到现在还记忆犹新。

    打得过肯定往人家老家里跑,打不过也要站那死撑一个兵挑一个团。

    泰瑞尔有一次想也没想跟着那团炽橙的光芒就扎进了恶魔堆里,险些跟那些恶魔一起被索拉里昂的烈焰挑飞。英普瑞斯那身金色的盔甲像是要烧起来了,他的枪尖短短的在泰瑞尔的兜帽下停留了半秒,随后一枪折回去捅死了想要偷袭的愚蠢恶魔。

    粘稠的血液喷了泰瑞尔一身,他看着那只握枪的手,拿着安德鲁因的手紧了紧。

    “要么跟我战斗,要么就等着恶魔大军把你撕成碎片。”索拉里昂的主人说道。泰瑞尔没有任何犹豫,他扬起剑,让其电蓝色的光翼与金色的那对成为了战场上令恶魔颤抖的审判者。

     ……

    “……泰瑞尔?”

    “嘘……他看上去快睡着了……”

    “不,还没。”泰瑞尔侧过脸,他的脸上有些泛红,但正如他所讲,眼睛还炯炯有神。“我觉得我还能再来一杯。”


4.

    没人拒绝大天使续杯的请求,事实上后来事情发展的有些超乎意料,酒吧应侍女娇笑着倒进了泰瑞尔的怀里,而他脑海里依然满是勇气大天使。

    抚摸。

    英普瑞斯的手十分炽热,就好像燃烧的火焰一样,顺着他的兜帽向下滑,经过的地方像阳光照射过那么温暖。泰瑞尔记得英普瑞斯总会在他胸前戳那么几下,这事从来没得到解释,而且往往得到盔甲撞盔甲的“咚咚”声。

    拥抱。

    鼻子尖满是廉价的香水和蜂蜜酒的味道,这些腥甜又有着异香的味道拉扯着泰瑞尔想让他回归现实,可依然挡不住他的幻想。他试图想象英普瑞斯杀完恶魔的时候总会来和他抱一下,恶魔大军的血污会蹭到双方身上,连血渍的形状都会变得逐渐相似。魅魔的血液和这个味道有些相同之处,那个时候的英普瑞斯闻起来简直像一只胸大臀肥的魅魔姑娘,但是这件事泰瑞尔永远不会告诉英普瑞斯的。

    一个湿漉漉的吻,泰瑞尔感觉有人在抚摸他的脸颊,这种感觉很怪异,尤其是当大天使猛的想起天使从不亲吻之后,他简直是僵在了那里,就像是被一只蛇妖瞪了一样。女郎嘀咕着埋怨他的木讷,他只是看着她,然后再把视线从女人脸上移到一边的火炉上。

    他喜欢那些火焰。

    女人显然感觉自己受到了侮辱,她一把推开了泰瑞尔,气冲冲地跑开了。泰瑞尔的鼻尖萦绕着那股香水和酒的混合味,他开始自嘲自己堕落的如此之快,连天使味道都没了。


5.

    泰瑞尔之前醉得不省人事,如今他是最清醒的一个。同伴们或醉或睡倒在桌上,一杯蜂蜜酒倒下,顺着桌子的纹路蜿蜒而去,像是满腔热血誓要流入大海的溪流,然而最后滴落在地上,还沾湿了泰瑞尔的袍子。

    大天使觉得有些头疼,他伸手敲了敲自己的脑袋,逼迫自己打起精神将女孩们送回房间。

    魔女软得像摊泥,李敏安静得毫无声息。莉娅有些抗拒,紧皱的眉头看得让人揪心。

泰瑞尔试着安抚她,女孩发出了几声哽咽,哀求着不要离开。噩梦的爪牙抓住了莉娅,而他所能做的只是在她最难受的时候握住她的手。

    “别走,别离开我……”莉娅的手拽着泰瑞尔的衣袍,她的用力之大甚至让关节泛白。泰瑞尔的心隐隐作痛,他没有离开。

    壁炉里的火焰燃烧正旺,他盯着那些流动的金红光焰逐渐出神。

    如果英普瑞斯当时这样哀求他会留下来吗?

    问题抛入心底,得到的是死一般的寂静。


皇竹调_死于托福

【给圈外朋友讲讲D3剧情】
又名对原作有着鬼一样的理解的同人作品

【给圈外朋友讲讲D3剧情】
又名对原作有着鬼一样的理解的同人作品

皇竹调_死于托福
【义勇】这篇用来庆祝大英子风暴...

【义勇】这篇用来庆祝大英子
风暴长存!嗷!
ooc个秦端雨。
(虽然其实是又一脚进冷坑饿得自产粮)
希望图片清晰=͟͟͞͞ʕ•̫͡•ʔ

【义勇】这篇用来庆祝大英子
风暴长存!嗷!
ooc个秦端雨。
(虽然其实是又一脚进冷坑饿得自产粮)
希望图片清晰=͟͟͞͞ʕ•̫͡•ʔ

景笑
01.03 看到朋友圈里的文章...

01.03

看到朋友圈里的文章《先喜欢的人输了》,我想,还是应该说出来,不要憋着浪费生命。成功不成功,那是后话。与MU的相处,这几天觉得自己能放下了。

陪学生写阅读,我发觉自己还是很喜欢看阅读的。

调了座位,希望能拯救个别人。我想期末考试总成绩能考过三班。加油(ง •̀_•́)ง!夏班,勤和细。无所谓他们喜欢与否,我只要他们成绩好。

*
精神明亮的人,这个作者不明亮。

01.03

看到朋友圈里的文章《先喜欢的人输了》,我想,还是应该说出来,不要憋着浪费生命。成功不成功,那是后话。与MU的相处,这几天觉得自己能放下了。

陪学生写阅读,我发觉自己还是很喜欢看阅读的。

调了座位,希望能拯救个别人。我想期末考试总成绩能考过三班。加油(ง •̀_•́)ง!夏班,勤和细。无所谓他们喜欢与否,我只要他们成绩好。

*
精神明亮的人,这个作者不明亮。

端雨my waifu

D3勇正(光棍节的泪水

光棍节画英&端亲亲安慰一下自己


  我回来了!

光棍节画英&端亲亲安慰一下自己


  我回来了!

LOFTER

让兴趣,更有趣

简单随性的记录
丰富多彩的内容
让生活更加充实

下载移动端
关注最新消息