https://github.com/sunshe35/PythonPlotlyCodes
刘老师混到今天这么牛逼是有原因的,简单来说就是谁都没有服过。
书上的下一个代码是:scatter_style.py
这个应该就是专门演示样式的代码,想必会比较简单了。
这几行怎么骚的我已经不想解释了,Block #2里面已经说的很清楚了。
其实看到这里我就有点不太明白了,x不是已经有了吗?为什么要重新指定内容呢?
要不我们还是先看一下结果?行,我今天心情不错,看看吧。
老说我没有tmp目录,想骂人了。
结果丑得一比:
我还是觉得他妹的应该这么操作,你们说呢?
还有这里:
然后我们又看到了列表data层,对不对:
数数这里有多少个dict,一层套一层啊:
画图这种事,前面肯定都是在做数据准备,这些数据包括什么呢?
肯定要有坐标的数据,坐标的数据有了还不行,还要说明是什么样的图的坐标数据,所以有了上面的Scatter对象。
data = [trace0, trace1]
那么现在我们看到数据已经准备好了。
那么这个layout是个什么鬼?
layout = dict(title = 'Styled Scatter',
yaxis = dict(zeroline = True), # 显示y轴的0刻度线
xaxis = dict(zeroline = False) # 不显示x轴的0刻度线
)
首先我们看到了一个title。注意,只要有title,就是一张图,地图一样的图才有title。
再看,这张地图呢,y的坐标要显示0轴,其实就是x轴了。x轴【不】显示0轴,其实就是不显示y轴了,所以这是一张只有横轴没有纵轴的图。
那么故事就来了,其实一张图可以是逻辑上分层的,就像大家用PS一样,我知道大家没用过PS,我也没用过。
最底层,肯定就是地图啦,再往上是国境线对不对?
所以layout这个对象其实就是在描述最底层的地图。
而之前的data里面描述的那些关于散点的坐标和连线方法等等其实就相当于在描述地图上的国境线层。
怎么样,刘老师的理解能力很牛逼吧。
fig = dict(data=data, layout=layout)
好,我们看到要合成出一整张地图fig了。
pyplt(fig, filename='tmp/scatter_style.html')
好,要尿了。不,要画了。
作者500个点瞎JB随机我很不推荐,我举例子必须是100个XBT,10%这样不用动计算器的例子。
所以我改成了50个点。
看起来还是很糟糕啊。
不行,我们要继续改改。
我要做什么呢?我要做相对于x轴镜像对称的的50个随机点不同Scatter方式的图。
所以我首先把点的总数设置成50个,然后xy单独随机出来,不要和作者一样多次随机出y的内容了。
然后,我们不是要做镜像对称吗?所以我们首先把x轴之上的点通过推高y的值来做出来:
再然后,我们把x轴之下的点,通过-1和y相乘,再向下拉低两个单位来构成和x轴之上点的镜像对称:
然后我们来看看效果:
虽然看起来还是一堆屎,但是明显搅动程度比原作者的要低。
注意x轴上下对称点的数值,在绝对值上是相等的。