使用Python操作neo4j和画柱状图

前言

毕业设计里要用到neo4j和柱状图来对数据进行可视化,踩了几天坑,今天填一下。

Neo4J

这是一个图像数据库,接触到这东西发现挺有意思的,比学MySQL有意思多了。

安装

1,从官网下载,但是速度奇慢,可能需要搭梯子。

2,当然是百度搜一搜了,反正挺多的,要么可以用我这个(链接:https://pan.baidu.com/s/1FUmJsA_6UR6Kgkrs7f_OMQ 
提取码:5t06),适用于JDK1.8

下载好安装包之后,解压到某一个目录,如果跟我一样只进行简单的可视化那不需要修改什么东西,至于部署在服务器上我们这里不谈。

在这之后,需要用命令行打开CMD,因为运行的脚本里面有用到PowerShell,而这个一般在C盘的系统目录里面,如果报了找不到PowerShell,

先检查是不是环境变量的问题,再检查是不是没装,一般是前者的问题。

这些准备就绪,切换到neo4j的bin目录之后,运行

neo4j.bat console

检查

浏览器输入http://localhost:7474/,如果有neo4j界面出来即可。

Neo4J

在neo4j主要是体现出各个节点之间的关系,所以主要有Node和Relationship这两个对象。

python中操作neo4j可以使用pyneo这个module,pip install就完事了。

这里我要可视化的例子是大学的名字,大学的名字全部存放在一个txt的文件中,然后他们同属于“大学”这个分类。

代码也不是很复杂,按行读取大学名称,然后创建节点和关系等。

# coding:utf-8
from py2neo import Graph,Node,Relationship

if __name__=="__main__":
    # 连接数据库
    graph = Graph("http://localhost:7474", username="neo4j", password="1998")
    # 文件流
    fr = open("../data/college.txt",‘r‘,encoding="utf-8")
    # 分类节点
    college = Node("分类",name="大学")
    graph.create(college)

    for i in  fr.readlines():
        # 每个大学的节点
        u = Node("大学名字",name=i)
        graph.create(u)
        # 和分类节点的关系
        relationship = Relationship(college,"大学",u)
        graph.create(relationship)

再去看看效果:

使用python画柱状图

这里需要可视化的是学校开设的课程的平均的分数,需要用到课程表和成绩表,先从课程表找到对应的学校开设的课程,然后

再查找成绩表中对应的课程的评分。

主要注意的柱状图参数的设置,比如间隔,Y轴的起始刻度字号等等。

import pymysql
import matplotlib.pyplot as plt
from  matplotlib.pyplot import MultipleLocator

def pltImage(schoolname,score,course,imageDir):
    # 中文显示
    plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘]
    plt.rcParams[‘axes.unicode_minus‘] = False
    # XY轴标题
    plt.xlabel(‘课程‘,fontsize=12)
    plt.ylabel("平均分",fontsize=12)
    # 刻度字体大小5
    plt.tick_params(labelsize=5) 

    # 标题 XY轴
    label = schoolname
    loc = ‘left‘
    font_dict = {‘fontsize‘: 14,                  ‘fontweight‘: 8.2,                  ‘verticalalignment‘: ‘baseline‘,                  ‘horizontalalignment‘: loc}
    plt.title(label, fontdict=font_dict, loc=loc)
    # X字体倾斜30度
    plt.xticks(rotation=30)

    # 设置间隔
    xLocator = MultipleLocator(10)
    ax = plt.gca()
    ax.xaxis.set_major_locator(xLocator)

    # 数据
    plt.bar(range(len(course)), score, color=‘rgb‘, tick_label=course)
    # 保存到某个目录
    plt.savefig(imageDir + schoolname + ‘.jpg‘)
    plt.show()

if __name__ == "__main__":
    # 数据库连接
    connection = pymysql.connect(
        "localhost", "root", "1998", "graduate"
    )
    cursor = connection.cursor()

    # 根据学校缩写得到学校开设的各个科目的平均分 制成柱状图

    # 从schoolShortName取出学校缩写的集合
    fr = open("../output/schoolShortName",‘r‘,encoding=‘utf-8‘)
    schoolname = []
    for i in fr.readlines():
        schoolname.append(i.split("-")[0])

    # 遍历
    for i in schoolname:
        # 一个学校的课程列表
        resultSet = getCoursesBySchoolName(i)
        courseList = []
        discussCountList = []
        schoolName = ""
        for j in resultSet:
            temp2 = getCourseDiscussCount(j[0])
            schoolName = j[2]
            if temp2 != None:
                courseList.append(j[1])
                discussCountList.append(temp2)
        if len(courseList) != 0:
            pltImage(schoolName,discussCountList,courseList,"../CourseDiscuss/")

效果如图:

原文地址:https://www.cnblogs.com/Yintianhao/p/12541966.html

时间: 2024-08-29 15:13:02

使用Python操作neo4j和画柱状图的相关文章

python画柱状图并且输出到html文件

import matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltfrom Cstring import StringIO y = [3, 10, 7, 5, 3, 4.5, 6, 8.1] N = len(y) x = range(N) width = 1/1.5 plt.bar(x, y, width, color="blue") io=StringIO()plt.savefie(io,format="

Python 中 plt 画柱状图和折线图

1. 背景 Python在一些数据可视化的过程中需要使用 plt 函数画柱状图和折线图. 2. 导入 import matplotlib.pyplot as plt 3. 柱状图 array= np.array(array) plt.hist(array, bins=50,facecolor="red", edgecolor="red" ,linewidth=5,alpha=0.7) plt.xlabel("") plt.ylabel("

python操作word(改课文格式)【最终版】

python操作word的一些方法,前面写了一些感悟,有点跑题,改了下题目,方便能搜索到.心急的可以直接拉到最后看代码,我都加了比较详细的注释. 从8.3号早上9点,到8.8号下午5点半下班,终于把这个python代码写出来了,这五天简直是废寝忘食(扯淡),每天查资料到半夜2点(其实是天太热,洗完澡又晾干就要一个多小时了,在这里吐槽下今年的夏天,2016年北京的7月份简直了,平生第一次长痱子,连去年都没用过的凉席都翻出来了). 好吧,扯得有点远了.因为工作需要,要批量修改一批rtf文件里的文字格

python 操作excel表格

Python 操作excel 表格 #coding=utf-8 import xlsxwriter #1.创建excel 对象 work = xlsxwriter.Workbook('hello.xlsk')#在当前目录下创建一个Excel文件 #2. 创建表格 worksheet = work.add_worksheet('int') #3.写入内容 title_index = ["A","B","C","D","

Python操作数据库(mysql redis)

一.python操作mysql数据库: 数据库信息:(例如211.149.218.16   szz  123456) 操作mysql用pymysql模块 #操作其他数据库,就安装相应的模块 import  pymysql ip='211.149.218.16' port=3306 passwd='123456' user='root' db='szz' conn=pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db,cha

python操作mysql ------- SqlAchemy正传

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1

Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memc

python操作mysql数据库

连接数据库 输入值 存入数据库 关闭 import string import mysql.connector conn=mysql.connector.connect(user='root',password='test',database='dalian',use_unicode=True) cursor=conn.cursor() a=raw_input('enter an id: ') b=raw_input('enter a name: ') while(a!='quit' or b!

使用python操作InfluxDB

环境: CentOS6.5_x64InfluxDB版本:1.1.0Python版本 : 2.6 准备工作 启动服务器 执行如下命令: service influxdb start 示例如下: [[email protected] ~]# service influxdb start Starting influxdb... influxdb process was started [ OK ] [[email protected] ~]# 安装influxdb-python github地址: