python和编程的新手,请耐心等待。我有一个从.csv文件导入的数据集,我正在尝试按日期(x轴)在1年内绘制一列值(y轴),但是问题是日期过于密集,我我一辈子都无法弄清楚如何将它们隔开或修改它们的定义。这是我正在使用的代码:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib as mpl
from html" target="_blank">scipy import stats
import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt
df = pd.read_csv('Vanuatu Earthquakes 2018-2019.csv')
这是线条图代码:
plt.figure(figsize=(15, 7))
ax = sns.lineplot(x='date', y='mag', data=df).set_title("Earthquake magnitude May 2018-2019")
plt.xlabel('Date')
plt.ylabel('Magnitude (Mw)')
plt.savefig('EQ mag time')
目前,这给了我这个线条图:
目前,我想通过每天的小滴答声和每周的开始时的较大的滴答声和标签来做到这一点。不必一定是这样,但是我主要是想降低密度。我已经看过这里的大量帖子,但是它们似乎都不适合我的情况,因此我们将不胜感激。
[更新]
按照Konqui的建议得到日期,我的代码现在看起来像这样:
time = pd.date_range(start = '01-05-2018',
end = '01-05-2019',
freq = 'D')
df = pd.DataFrame({'date': list(map(lambda x: str(x), time)),
'mag': np.random.random(len(time))})
plt.figure(figsize=(15, 7))
df['date'] = pd.to_datetime(df['date'], format = '%Y-%m')
ax = sns.lineplot(x='date', y='mag', data=df).set_title("Earthquake magnitude May 2018-2019")
ax.xaxis.set_major_locator(md.WeekdayLocator(byweekday = 1))
ax.xaxis.set_major_formatter(md.DateFormatter('%Y-%m-%d'))
plt.setp(ax.xaxis.get_majorticklabels(), rotation = 90)
ax.xaxis.set_minor_locator(md.DayLocator(interval = 1))
plt.xlabel('Date')
plt.ylabel('Magnitude (Mw)')
这给我一个错误消息:AttributeError: 'Text' object has no attribute 'xaxis'
。有什么想法吗?
我想您是从一个类似于保存在Vanuatu Earthquakes 2018-2019.csv
文件中的数据帧开始的:
import pandas as pd
import numpy as np
time = pd.date_range(start = '01-01-2020',
end = '31-03-2020',
freq = 'D')
df = pd.DataFrame({'date': list(map(lambda x: str(x), time)),
'mag': np.random.random(len(time))})
输出:
date mag
0 2020-01-01 00:00:00 0.940040
1 2020-01-02 00:00:00 0.765570
2 2020-01-03 00:00:00 0.951839
3 2020-01-04 00:00:00 0.708172
4 2020-01-05 00:00:00 0.705032
5 2020-01-06 00:00:00 0.857500
6 2020-01-07 00:00:00 0.866418
7 2020-01-08 00:00:00 0.363287
8 2020-01-09 00:00:00 0.289615
9 2020-01-10 00:00:00 0.741499
绘图:
import seaborn as sns
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize = (15, 7))
sns.lineplot(ax = ax, x='date', y='mag', data=df).set_title('Earthquake magnitude May 2018-2019')
plt.xlabel('Date')
plt.ylabel('Magnitude (Mw)')
plt.show()
您应该做一系列的事情:
'date'
值str
类型,你需要将它们转换为datetime
通过df['date'] = pd.to_datetime(df['date'], format = '%Y-%m-%d')
这样,您的x轴就是一个datetime
类型,上面的图将变成这样:
然后,您必须调整刻度线;对于主要刻度,您应该设置:
import matplotlib.dates as md
ax.xaxis.set_major_locator(md.WeekdayLocator(byweekday = 1))
ax.xaxis.set_major_formatter(md.DateFormatter(‘%Y-%m-%d’))
plt.setp(ax.xaxis.get_majorticklabels(), rotation = 90)
对于较小的滴答声:
# specify the position of the minor ticks at each day
ax.xaxis.set_minor_locator(md.DayLocator(interval = 1))
您可以选择使用以下方法编辑刻度线的长度:
ax.tick_params(axis = 'x', which = 'major', length = 10)
ax.tick_params(axis = 'x', which = 'minor', length = 5)
因此最终的情节将变为:
# import required packages
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.dates as md
# read the dataframe
df = pd.read_csv('Vanuatu Earthquakes 2018-2019.csv')
# convert 'date' column type from str to datetime
df['date'] = pd.to_datetime(df['date'], format = '%Y-%m-%d')
# prepare the figure
fig, ax = plt.subplots(figsize = (15, 7))
# set up the plot
sns.lineplot(ax = ax, x='date', y='mag', data=df).set_title('Earthquake magnitude May 2018-2019')
# specify the position of the major ticks at the beginning of the week
ax.xaxis.set_major_locator(md.WeekdayLocator(byweekday = 1))
# specify the format of the labels as 'year-month-day'
ax.xaxis.set_major_formatter(md.DateFormatter('%Y-%m-%d'))
# (optional) rotate by 90° the labels in order to improve their spacing
plt.setp(ax.xaxis.get_majorticklabels(), rotation = 90)
# specify the position of the minor ticks at each day
ax.xaxis.set_minor_locator(md.DayLocator(interval = 1))
# set ticks length
ax.tick_params(axis = 'x', which = 'major', length = 10)
ax.tick_params(axis = 'x', which = 'minor', length = 5)
# set axes labels
plt.xlabel('Date')
plt.ylabel('Magnitude (Mw)')
# show the plot
plt.show()
如果您注意图中的y轴,则会看到'mag'
值落在范围内(0-1)
。这是由于我使用生成了这些 伪造的 数据'mag': np.random.random(len(time))
。如果你读 你 从文件中的数据Vanuatu Earthquakes 2018-2019.csv
,你会得到y轴上的正确值。尝试简单地复制 整个代码 部分中的 代码 。
我正在使用库MPAndroid,< code >编译' com . github . philjay:MPAndroidChart:v 3 . 0 . 0-beta 1 ' 我必须在MPAndroid折线图中传递x轴上的日期和y轴上的值,当我传递x轴或y轴上的值时,应用程序崩溃,显示< code > ArrayIndexOutOfBound < code >异常,数组大小为-2。 我怎么能做到这一
我是新来的,不知道如何解决这个问题;我也不知道是否有可能做我假装的事。问题是,我试图在JavaSwing应用程序中显示一个图形,我传递要显示的日期和值。日期由用户选择,可能不在一行中;,我的意思是,如果用户选择从星期四到星期一,那么星期六和星期天将被避免,并传递到图表星期四、星期五和星期一。问题是,图表从星期四到星期一(包括星期六和星期日)在X轴上显示它们,而实际情况并非如此。基于此示例,我的类如
我正在从csv文件中读取日期/时间和数据,并将其存储在折线图中。我的日期/时间字符串是或,这实际上是第一个条目,我有几个小时的数据。 首先,我将chartArea X轴lablestyle设置为正确的格式:。 然后,我使用与上面相同的格式将实际的日期字符串解析为DateTime格式:。并将数据添加到图表中。
问题内容: 我想降低CSS中的图像亮度。我进行了很多搜索,但所能获得的只是关于如何更改不透明度的信息,但这会使图像更明亮。谁能帮我 ? 问题答案: 您要寻找的功能是。它能够执行多种图像效果,包括亮度: 注意,这只是最近才成为CSS的功能。它是可用的,但大量的浏览器在那里将不会支持它,和那些支持它需要供应商名称(即,等)。 也可以使用SVG进行这样的滤镜效果。SVG对这些效果的支持已经建立并得到广泛
我正在编写一个加密照片的应用程序,尽管它需要在类似画廊的活动中解密和显示缩略图。当然,您可以在不同的活动中单击并查看全尺寸图像。我正在使用AES/CBC/PKCS7Padding密码和256位密钥。我使用PBEWithSHA256and256biates CBC BC导出密码密钥,并将其存储到内存中。然后,所有需要进行加密/解密的线程都在使用内存中的密钥初始化密码对象。 所以这是我的问题。当我同时
Highcharts 曲线图 以下实例演示了 X 轴翻转曲线图。 我们在前面的章节已经了解了 Highcharts 配置语法。接下来让我们来看个完整实例: 配置 配置图表类型 type 为 spline。chart.type 默认为 "line"。 配置 X 轴翻转。inverted 设置为 true 即 X 轴翻转,默认为 false。 chart var chart = { type:
我正在处理一个聊天应用程序,我有一些问题显示聊天消息。对于存储,我使用了一个Room数据库,为了显示消息,我使用了一个RecyclerView。问题是,activity变得非常慢,在滚动信息时没有那么好的响应。 下面是我的代码: ChatActivity.java AppDatabase.java MessageDao.java ChatAdapter.java ChatitemViewWhold
我正在尝试使用我自己的标签制作Seaborn条形图,代码如下: 但是,我得到一个错误: 有什么好处?