Spyder临摹作业(西安交大国家艺术基金数据可视化培训第10天)

1 安装环境配置

备份:打开 Anaconda3.2019.03\Lib文件夹,新建一个备份文件夹,将site-packages文件夹(725m)使用winrar压缩到此文件夹中,命名为site-packages备份.rar。

替换:将老师提供的site-packages文件夹(大概150m)拷贝到Anaconda3.2019.03\Lib\中,必要时替换原有的相关文件。

 

2  工程

案例1:动态直方图(类似B站效果)

(1)工程文件样本:在E:\projects\Asm中创建一个Spyder文件夹,拷贝老师提供的CSV_CONV工程文件夹、Historical-ranking-data-visualization-based-on-d3.js-master文件夹。

(2)数据库:
     源数据——data.csv:
                       使用excel打开data.csv,该数据库为2009-2017年全国32个省的数据,共有32行10列;
     目标数据:
                      使用excel打开Historical-ranking-data-visualization-based-on-d3.js-master\src\example.csv文件,该数据库为4列(name,type,value,date等4个变量)、多行的数据。我们将使用python将源数据转换成目标数据,从而便于Historical-ranking-data-visualization加载。


(3)打开工程文件:
      用Spyder打开CSV_CONV.py文件,另存为动态直方图_吴志勇20190529.py,该代码用于将源数据整形为目标数据,代码如下:

import os;
import string;
file =open("data.csv","r");
out =open("data_out.csv","w");

out.write("name,type,value,date\r");
def write_line(str):
	strarray= str.split(",")
	for i in range(8,-1,-1):
		out.write(""+strarray[0]+"");
		out.write(",");
		out.write(strarray[0]);
		out.write(",");
		out.write(strarray[i+1]);
		out.write(",");
		out.write("%s"%(2017-i)+"-01-01");
		out.write(",\r");

str=file.readline();
while True:
	str=file.readline();
	str=str.replace("\n","")
	if (str==None or str==""):
		break;
	print(str);
	write_line(str)

整形后输出的数据为data_out.csv
      

(4)可视化效果
        进入Historical-ranking-data-visualization-based-on-d3.js-master\src,打开bargraph.html,这是一个使用D3.js完成的动态直方图小工具,能将符合example格式的数据库变成动态直方图。源代码不详,CSDN有类似文章可供参考。

       选择data_out.csv即可看到效果。

       乱码处理:使用Spyder打开Historical-ranking-data-visualization-based-on-d3.js-master\src\config.js,修改第9行代码为:  //encoding: "UTF-8",
encoding: "GBK",

Spyder临摹作业(西安交大国家艺术基金数据可视化培训第10天)_第1张图片

案例2:动态词云效果

(1)工程文件样本:同上

(2)数据库:
     源数据—500.csv,共500行3列组成的一个排后榜
 
(3)数据可视化效果1
    使用spyder打开word_cloud.py,另存为词云1_吴志勇20190529.py,代码如下:
 

import pandas as pd
import matplotlib.dates as mdate
import wordcloud as word
import matplotlib.pyplot as plt

df = pd.read_csv('500.csv',encoding = 'utf-8') 
df = df.groupby(by = "国家").count() 
print(df[:10]);
df = df['排名'].sort_values(ascending = False) 
print(df[:10]);
font_path="./Deng.ttf"
word_cloud=word.WordCloud(
    background_color = '#F3F3F3', 
    font_path = font_path,
    width = 500, 
    height = 300,
    margin = 2, 
    max_font_size = 200, 
    random_state = 42,
    scale = 2,
    colormap = 'viridis',  # 默认virdis
    )
word_cloud.generate_from_frequencies(df)
# or
# wordcloud.fit_words(df)
plt.imshow(word_cloud,interpolation = 'bilinear')
plt.axis('off')
plt.show()

如果需要将生成的图分辨率增大,并且保存在本地,则增加代码到最后一行:

word_cloud.to_file('500_big.png')

        Spyder临摹作业(西安交大国家艺术基金数据可视化培训第10天)_第2张图片                    

 

你可能感兴趣的:(ASM)